Disk driver cluster management of time shift bufer with file allocation table structure

ABSTRACT

A file allocation system for a hard disk drive includes a memory with driver logic and a processor configured with the driver logic to receive a request to allocate hard disk space of a defined size for a buffer file. In some embodiments, the processor is configured with the driver logic to allocate clusters for the buffer file from a plurality of clusters on the hard disk, wherein the clusters for the buffer file store media content instances. In some embodiments, the processor is configured with the driver logic to designate a portion of the clusters of the buffer file for at least one non-buffer file such that the non-buffer file is permitted to share the portion of the clusters of the buffer file with the buffer file.

CROSS-REFERENCE TO RELATED APPLICATION

This application is related to copending U.S patent application entitled“APPLICATION MANAGEMENT AND INTERFACE FOR CLUSTER CONTROL OF TIME SHIFTBUFFER,” which is being filed on the same day as the present applicationand is hereby entirely incorporated herein by reference.

TECHNICAL FIELD

The present invention is generally related to television systems, and,more particularly, is related to a system and method for maintainingstorage for media content.

BACKGROUND OF THE INVENTION

With recent advances in digital transmission technology, subscribertelevision systems are now capable of providing much more than thetraditional analog broadcast video. In implementing enhancedprogramming, the home communication terminal device (“HCT”), otherwiseknown as the set-top box, has become an important computing device foraccessing media content services (and media content within thoseservices) and navigating a user through a maze of available services. Inaddition to supporting traditional analog broadcast video functionality,digital HCTs (or “DHCTs”) now also support an increasing number oftwo-way digital services such as video-on-demand and personal videorecording.

Typically, a DHCT is connected to a cable or satellite, or generally, asubscriber television system, and includes hardware and softwarenecessary to provide the functionality of the digital television systemat a user site. Typically, some of the software executed by a DHCT isdownloaded and/or updated via the subscriber television system. EachDHCT also typically includes a processor, communication components, andmemory, and is connected to a television or other display device, suchas a personal computer. While many conventional DHCTs are stand-alonedevices that are externally connected to a television, a DHCT and/or itsfunctionality may be integrated into a television or personal computeror even an audio device such as a programmable radio, as will beappreciated by those of ordinary skill in the art.

DHCTs are typically capable of providing users with a very large numberand variety of media content choices. As the number of available mediacontent choices increases, viewing conflicts arise whereby the user mustchoose between watching two or more media content instances (e.g.discrete, individual instances of media content such as, for anon-limiting example, a particular television show or “program”), all ofwhich the user would like to view. Further, because of the large numberof viewing choices, the user may miss viewing opportunities. Storagedevices coupled to the DHCT help alleviate this problem by providing amechanism to store media content for later retrieval for viewing.However, media content storage systems are often inefficient. Therefore,there exists a need to efficiently store media content

Thus, a heretofore unaddressed need exists in the industry to addressthe aforementioned deficiencies and inadequacies.

BRIEF DESCRIPTION OF THE DRAWINGS

The preferred embodiment of the present invention can be betterunderstood with reference to the following drawings. The components inthe drawings are not necessarily to scale, emphasis instead being placedupon clearly illustrating the principles of the present invention.Moreover, in the drawings, like reference numerals designatecorresponding parts throughout the several views.

FIG. 1A is a block diagram of an example subscriber television system(STS), in accordance with one embodiment of the invention.

FIG. 1B shows a block diagram of the transmission signals supported bythe STS of FIG. 1A, and input into the digital home communicationterminal (DHCT) from the headend, in accordance with one embodiment ofthe invention.

FIG. 2 is a block diagram of an example headend as depicted in FIG. 1Aand related equipment, in accordance with one embodiment of theinvention.

FIG. 3A is a block diagram of an example DHCT as depicted in FIG. 1A andrelated equipment, in accordance with one embodiment of the invention.

FIG. 3B is a block diagram of an example hard disk and hard diskelements located within the storage device coupled to the DHCT depictedin FIG. 3A, in accordance with one embodiment of the invention.

FIG. 4A is a programming diagram of example software programming code inconventional “C” computer language that can be used to create andmaintain the data structure for each media content instance receivedinto a time shift buffer (TSB), in accordance with one embodiment of theinvention.

FIG. 4B is a programming diagram of example software programming code inconventional “C” computer language that can be used to create andmaintain an ordered list of media content instances for the TSB, inaccordance with one embodiment of the invention.

FIGS. 5A-5F are block diagram illustrations of an example fileallocation table (FAT) depicting how the FAT is updated as files arecreated and media content instances are added or deleted, in accordancewith one embodiment of the invention.

FIGS. 6A-6C are programming diagrams of example software programmingcode in conventional “C” computer language for maintaining an inventoryof allocated clusters and data for the clusters for the FAT depicted inFIG. 5A, in accordance with one embodiment of the invention.

FIGS. 7A-7C are programming diagrams of example software programmingcode in conventional “C” computer language corresponding to driverapplication programming interfaces (APIs) invoked by the personal videorecording (PVR) application, in accordance with one embodiment of theinvention.

FIGS. 8A-8C are block diagram illustrations depicting how the devicedriver manages the cluster allocation and deallocation for media contentinstances downloaded to the TSB, in accordance with one embodiment ofthe invention.

FIGS. 9A-9E are block diagram illustrations depicting how the devicedriver manages cluster allocations and deallocations for permanentrecordings out of the TSB, in accordance with one embodiment of theinvention.

FIGS. 10A and 10B are block diagram illustrations depicting how the PVRapplication handles playback transitions between a permanently recordedfile and the TSB file, in accordance with one embodiment of theinvention.

FIG. 10C is a flowchart depicting how the PVR application handlesplayback transitions between the permanently recorded file and the TSBfile, in accordance with one embodiment of the invention.

FIGS. 10D and 10E are programming diagrams of example softwareprogramming code in conventional “C” computer language corresponding todriver APIs that handle playback transitions between the permanentlyrecorded file and the TSB file, in accordance with one embodiment of theinvention.

FIGS. 11A-11C are block diagram illustrations depicting how the devicedriver manages permanently recording multiple contiguous media contentinstances from the TSB, in accordance with one embodiment of theinvention.

FIG. 12 is a block diagram of an example remote control device forproviding input to the DHCT depicted in FIG. 3A, in accordance with oneembodiment of the invention.

FIG. 13A-13C are screen diagrams of example user interface screendisplays depicting how a progress bar can be used as a source ofinformation about media content instances in the TSB, as well as how theprogress bar can be used to navigate a user through the TSB, inaccordance with one embodiment of the invention.

FIG. 14 is a screen diagram of an example user interface screen displaydepicting a barker, which warns of the absence of an adequate amount ofhard disk storage space for recording.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The preferred embodiments of the invention now will be described morefully hereinafter with reference to the accompanying drawings, in whichpreferred embodiments of the invention are shown. The invention may,however, be embodied in many different forms and should not be construedas limited to the embodiments set forth herein; rather, theseembodiments are provided so that this disclosure will be thorough andcomplete, and will fully convey the scope of the invention to thosehaving ordinary skill in the art. Furthermore, all “examples” givenherein are intended to be non-limiting and among others.

One embodiment of the present invention is generally implemented as partof a subscriber television system (STS), which includes digitalbroadband delivery systems (DBDS) and cable television systems (CTS). Asa non-limiting example, a subscriber television system (STS) and itsoperation will be described initially, with the understanding that otherconventional data delivery systems are within the scope of the preferredembodiments of the invention. FIG. 1A shows a block diagram view of aSTS 10, which is generally a high quality, reliable and integratednetwork system that is typically capable of delivering video, audio,voice and data services to digital home communication terminals (DHCTs)16. Although FIG. 1A depicts a high level view of a STS 10, it should beappreciated that a plurality of subscriber television systems can tietogether a plurality of regional networks into an integrated globalnetwork so that DHCT users can receive media content provided fromanywhere in the world.

Further, it will be appreciated that the STS 10 shown in FIG. 1A ismerely illustrative and should not be construed as implying anylimitations upon the scope of the preferred embodiments of the presentinvention. For instance, subscriber television systems also includedwithin the scope of the preferred embodiments of the invention includesystems not utilizing physical structured cabling for transmission, suchas, but not limited to, satellite systems. Further, transmission mediaincluded within the scope of the preferred embodiments of the inventioninclude, but are not limited to, HFC, optical, satellite, RF, FM, andmicrowave. Further, data provided from the headend 11 to the DHCTs 16and programming necessary to perform the functions discussed below willbe understood to be present in the STS 10, in accordance with thedescription below.

The STS 10 typically delivers broadcast video signals as digitallyformatted signals in addition to delivering traditional broadcast analogvideo signals. Furthermore, the system can typically support one waybroadcast services as well as both one-way data services and two-waymedia content and data services. The two-way operation of the networktypically allows for user interactivity with services, such asPay-Per-View programming, Near Video-On-Demand (NVOD) programmingaccording to any of several known NVOD implementation methods,Video-on-Demand (VOD) programming (according to any of several VODimplementation methods), and interactive applications, such as Internetconnections.

The STS 10 also provides the interfaces, network control, transportcontrol, session control, and servers to access media content from mediacontent services, and distributes media content to DHCT users. As shownin FIG. 1A, a typical STS 10 comprises a headend 11, hubs 12, an HFCaccess network 17, and DHCTs 16. It should be appreciated that althougha single component (e.g. a headend) is illustrated in FIG. 1A, a STS 10can feature a plurality of any one of the illustrated components or maybe configured with alternative embodiments for any one of the individualcomponents or with yet other additional components not enumerated above.

Media content provided by one or more content providers (not shown) iscommunicated by the content providers to one or more headends 11. Fromthose headends 11 the media content is then communicated over acommunications network 18 that includes a plurality of HFC accessnetworks 17 (only one HFC access network 17 is illustrated). The HFCaccess network 17 typically comprises a plurality of HFC nodes 13, eachof which may serve a local geographical area. The hub 12 connects to theHFC node 13 through a fiber portion of the HFC access network 17. TheHFC node 13 is connected to a tap 14 which, in one embodiment, isconnected to a network interface unit (NIU) 15 which is connected to adigital home communication terminal (DHCT) 16. In other embodiments, thetap 14 is connected directly to a digital home communication terminal(DHCT) 16. The NIU 15, when implemented, is normally located at theproperty of a subscriber and provides a transparent interface betweenthe HFC node 13 and the user property internal wiring. Coaxial cablesare typically used to couple nodes 13, taps 14 and NIUs 15 because theelectrical signals can be easily repeated with radio frequency (RF)amplifiers.

As the high-level operations of many of the functions of a STS 10 arewell known to those of ordinary skill in the art, further high leveldescription of the overall STS 10 of FIG. 1A will not be containedherein

FIG. 1B is a block diagram illustrating the transmission signalssupported by the STS 10 (FIG. 1A), where the transmission signals 60,64, 68, 72 and 76 are input into a DHCT 16 in accordance with oneembodiment of the invention. Preferably, one or more content providers(not shown) provide the content that is included in the transmissionsignals. Transmission signals can be generated at a headend 11 or at ahub 12 (FIG. 1A) that might function as a mini-headend and whichtherefore possesses some of the headend functionality. In someimplementations, the transmission signals can be provided by one or moreof the content providers.

As depicted in FIG. 1B, the STS 10 (FIG. 1A) can simultaneously supporta number of transmission signal types, transmission rates, andmodulation formats. The ability to carry analog and digital signals overa large bandwidth are characteristics of a Hybrid Fiber/Coax (HFC)Network typically employed in a STS, as in the STS 10 of FIG. 1A. Aswill be appreciated by those of ordinary skill in the art, analog anddigital signals in HFC networks can be multiplexed using FrequencyDivision Multiplexing (FDM), which enables many different types ofsignals to be transmitted over the STS 10 to the DHCT 16. Typically, aSTS 10 using HFC supports downstream (i.e., in the direction from theheadend 11 to the DHCT 16) frequencies from 50 MHz to 870 MHz, whereasupstream frequencies (i.e., in the direction from the DHCT 16 to higherlevels of the system) are in the 5 MHz to 42 MHz band. Generally, theradio frequency (RF) bandwidth spacing for analog and digital servicesis 6 MHz. Furthermore, for a typical 870 MHz system in the U.S., apossible downstream RF spectrum subdivision plan uses 6 MHz frequencysubdivisions, or spans, within the 50 MHz to 550 MHz band for analogvideo transmission signals and within the 550 MHz to 870 MHz range fordigital transmission signals. The Analog Transmission Signals (ATSs) 60shown in FIG. 1B are typically broadcast in 6 MHz frequencysubdivisions, typically referred to in analog broadcasting as channels,having an analog broadcast signal composed of analog video and analogaudio, and include Broadcast TV Systems Committee (BTSC) stereo andSecondary Audio Program (SAP) audio. Referring again to FIG. 1B, thedownstream direction transmission signals, having been multiplexed, andin one embodiment using frequency division multiplexing (FDM), are oftenreferred to as in-band transmission signals and include AnalogTransmission Signals (ATSs) 60 and Digital Transmission Signals (DTSs)64, 68, 72 (also known as Digital Transport Signals). These transmissionsignals carry video, audio and data services. For example, thesetransmission signals may carry television signals, Internet data, or anyadditional types of data, such as Electronic Program Guide (EPG) data.Additionally, as will be appreciated by those of ordinary skill in theart, additional data can be sent with the analog video image in theVertical Blanking Interval (VBI) of the video signal and stored in DHCTmemory or a DHCT local physical storage device (not shown). It should beappreciated, however, that the amount of data that can be transmitted inthe VBI of the analog video signal is typically significantly less thandata transmitted in a DTS.

Like the ATSs 60, the DTSs 64, 68, 72 each occupies 6 MHz of the RFspectrum. However, the DTSs 64, 68, 72 are digital transmission signalsconsisting of 64- or 256-Quadrature Amplitude Modulated (QAM) digitalsignals formatted as MPEG-2 transport streams, allocated in a separatefrequency range. As will be described in more detail below, the MPEG-2transport stream enables transmission of a plurality of DTS types overeach 6 MHz RF subdivision, as compared to a 6 MHz ATS. The three typesof digital transport signals illustrated in FIG. 1B include broadcastdigital transmission signals 64, carousel digital transmission signals68, and on-demand transmission signals 72.

MPEG-2 transport may be used to multiplex video, audio, and data in eachof these Digital Transmission Signals (DTSs). However, because an MPEG-2transport stream allows for multiplexed video, audio, and data into thesame stream, the DTSs do not necessarily have to be allocated inseparate 6 MHz RF frequencies, unlike ATSs 60. On the other hand, eachDTS is capable of carrying multiple broadcast digital video mediacontent instances, multiple cycling data carousels containing broadcastdata, and data requested on-demand by the subscriber. Data is formatted,such as in Internet Protocol (IP), mapped into MPEG-2 packets, andinserted into the multiplexed MPEG-2 transport stream. Encryption can beapplied to the data stream for security so that the data may be receivedonly by authorized DHCTs. The authorized DHCT 16 is provided with themechanisms to receive, among other things, additional data or enhancedservices. Such mechanisms can include “keys” that are required todecrypt encrypted data.

Each 6 MHz RF subdivision assigned to a digital transmission signal cancarry the video and audio streams of the media content instances ofmultiple television (TV) stations, as well as media content and datathat is not necessarily related to those TV media content instances, ascompared to one TV channel broadcast over one ATS 60 that consumes theentire 6 MHz. The digital data is inserted into MPEG transport streamscarried through each 6 MHz frequency subdivision assigned for digitaltransmission, and then de-multiplexed at the subscriber DHCT so thatmultiple sets of data can be produced within each tuned 6 MHz frequencyspan, or subdivision.

Although broadcast in nature, the carousel DTSs 68 and on-demand DTSs 72offer different functionality. Continuing with FIG. 1B, the broadcastDTSs 64 and carousel DTSs 68 typically function as continuous feeds forindefinite time, whereas the on-demand DTSs 72 are continuous feedssessions for a limited time. All DTS types are capable of beingtransmitted at high data rates. The broadcast DTSs 64 carry typical datacomprising multiple digitally-MPEG-2 compressed and formatted TV sourcesignals and other continuously fed data information. The carousel DTSs68 carry broadcast media content or data that is systematicallybroadcast in a cycling fashion but updated and revised as needed. Thus,the carousel DTSs 68 serve to carry high volume data such as mediacontent and data and possibly, other data at high data rates. Thecarousel DTSs 68 preferably carry data formatted in directories andfiles by a Broadcast File System (BFS) (not shown), which is used forproducing and transmitting data streams throughout the STS 10, and whichprovides an efficient means for the delivery of application executablesand application media content and data to the DHCT, as will be describedbelow. Media content and data received by the DHCT 16 in such manner canthen be saved in the DHCT memory and/or transferred to the DHCT storagedevice for later use. The on-demand DTSs 72, on the other hand, cancarry particular information such as compressed video and audiopertaining to subscriber requested media content instance preview and/ormedia content instance descriptions, as well as other specialized datainformation.

The User-to-Network Download Protocol of the MPEG-2 standard's DSM-CCspecification (Digital Storage Media—Command and Control) provides thedata carousel protocol used for broadcasting data from a server locatedat headend 11, or elsewhere. It also provides the interactive downloadprotocol for reliable downloading of data from a server (possibly thesame server) to an individual DHCT through the on-demand DTSs. Eachcarousel and on-demand DTS is defined by a DSM-CC session. Therefore,some of the basic functionality reflected in the DHCT 16 when the DHCTdoes not have a local physical storage device is somewhat similar to anetworked computer (i.e., a computer without a persistent storagedevice), in addition to traditional set top box functionality, as iswell known to those of ordinary skill in the art. A DHCT 16 with astorage device reduces data access latency when the data is stored inthe local physical storage device ahead of time.

Also shown in FIG. 1B are Out-Of-Band (OOB) signals that providecontinuously available two-way signaling to the subscribers' DHCT 16regardless of which in-band signals are tuned to by the individual DHCTin-band tuners, as described below. The OOB signals consist of a ForwardData Signal (FDS) 76 and a Reverse Data Signal (RDS) 80. The OOB signalscan comply to any one of a number of well known transport protocols butpreferably comply to either a DAVIC 1.1 Transport Protocol with FDS of1.544 mega-bits per second (Mbps) or more using quadrature phase shiftkeying (QPSK) modulation and an RDS of 1.544 Mbps or more using QPSKmodulation, or to a DOCSIS Transport Protocol with FDS of 27 Mbps using64-QAM modulation and a RDS of 1.544 Mbps or more using QPSK modulationor 16-QAM modulation. The OOB signals provide the two-way operation ofthe network, which allows for subscriber interactivity with theapplications and services provided by the network. Furthermore, the OOBsignals are not limited to a 6 MHz spectrum, but generally to a smallerspectrum, such as 1.5 or 3 MHz.

FIG. 2 is an overview of a headend 11, which provides the interfacebetween the STS 10 (FIG. 1A) and the service and content providers. Theoverview of FIG. 2 is equally applicable to a hub 12, and the sameelements and principles may be implemented at a hub 12 instead of theheadend 11 as described herein. It will be understood that the headend11 shown in FIG. 2 is merely illustrative and should not be construed asimplying any limitations upon the scope of the preferred embodiments ofthe invention. The headend 11 receives content from a variety of serviceand content providers, which can provide input in a variety of ways. Theheadend 11 combines the content from the various sources and distributesthe content to subscribers via the distribution systems of the network18.

In a typical system, the programming, services and other informationfrom content providers can be distributed according to a variety ofmechanisms. The input signals may be transmitted from sources to theheadend 11 via a variety of transmission paths, including satellites(not shown), and terrestrial broadcast transmitters and antennas (notshown). The headend 11 can also receive content from a direct feedsource 210 via a direct line 212. Other input sources from contentproviders include a video camera 214, analog input source 208, or anapplication server 216. The application server 216 may include more thanone line of communication. One or more components such as analog inputsource 208, input source 210, video camera 214, and application server216 can be located external to the headend 11, as shown, or internal tothe headend 11 as would be appreciated by one having ordinary skill inthe art. The signals provided by the content or programming inputsources can include a single media content instance (i.e. individualinstances of media content such as an episode of a television show, amovie, or a web-page, etc.) or a multiplex that includes several mediacontent instances.

The headend 11 generally includes one or more receivers 218 that areeach associated with a content source. MPEG encoders, such as encoder220, are included for digitally encoding at least some local programmingor a real-time feed from video camera 214, or the like. The encoder 220outputs the respective compressed video and audio streams correspondingto the analog audio/video signal received at its input. For example,encoder 220 can output formatted MPEG-2 or MPEG-1 packetized elementary(PES) streams or transport streams compliant to the syntax and semanticsof the ISO MPEG-2 standard, respectively. The PES or transport streamsmay be multiplexed with input signals from switch 230, receiver 218 andcontrol system 232. The multiplexing logic 222 processes the inputsignals and multiplexes at least a portion of the input signals intotransport stream 240. Analog input source 208 can provide an analogaudio/video broadcast signal which can be input into modulator 227. Frommodulator 227, a modulated analog output signal can be combined atcombiner 246 along with other modulated signals for transmission intotransmission medium 250. Alternatively, analog audio/video broadcastsignal from analog input source 208 can be input into modulator 228.Alternatively, analog audio/video broadcast signal can be input directlyfrom modulator 227 to transmission medium 250. The analog broadcastmedia content instances are transmitted via respective radio-frequency(RF) channels, each assigned for transmission of an analog audio/videosignal such as NTSC video, as described in association with FIG. 1B.

The switch, such as asynchronous transfer mode (ATM) switch 230,provides an interface to an application server 216. There can bemultiple application servers 216 providing a variety of services such asa Pay-Per-View service, including video on demand (VOD), a data service,an Internet service, a network system, or a telephone system. Serviceand content providers may download content to an application serverlocated within the STS 10. The application server 216 may also belocated within the headend 11 or elsewhere within the STS 10, such as ina hub 12. The various inputs into the heiadend 11 are then combined withthe other information from the control system 232, which is specific tothe STS 10, such as local programming and control information, which caninclude among other things conditional access information. The headend11 contains one or more modulators 228 to convert the received transportstreams 240 into modulated output signals suitable for transmission overthe transmission medium 250 through the network 18. Each modulator 228may be a multimodulator including a plurality of modulators, such as,but not limited to, QAM modulators, that radio frequency modulate atleast a portion of the transport streams 240 to become output transportstreams 242. The output signals 242 from the various modulators 228 ormultimodulators are combined, using equipment such as a combiner 246,for input into the transmission medium 250, which is sent via thein-band delivery path 254 to subscriber locations (not shown). In-banddelivery path 254 can include DTS 64, 68, 72, and ATS 60, as describedwith FIG. 1B. In one embodiment, the server 216 also provides varioustypes of data 288 to the headend 11. The data, in part, is received bythe media access control functions 224, that output MPEG transportpackets containing data 266 instead of digital audio/video MPEG streams.The control system 232 enables the television system operator to controland monitor the functions and performance of the STS 10. The controlsystem 232 interfaces with various components, via communication link270, in order to monitor and/or control a variety of functions,including the frequency spectrum lineup of the programming for the STS10, billing for each subscriber, and conditional access for the contentdistributed to subscribers. Information, such as conditional accessinformation, is communicated from the control system 232 to themultiplexing logic 222 where it is multiplexed into a transport stream240.

Among other things, the control system 232 provides input to themodulator 228 for setting the operating parameters, such as selectingcertain media content instances or portions of transport streams forinclusion in one or more output transport stream 242, system specificMPEG table packet organization, and/or conditional access information.Control information and other data can be communicated to hubs 12 andDHCTs 16 via an in-band delivery path 254 or via an out-of-band deliverypath 256.

The out-of-band data is transmitted via the out-of-band FDS 76 (FIG. 1B)of transmission medium 250 by means such as, but not limited to, aQuadrature Phase-Shift Keying (QPSK) modem array 226. Two-waycommunication utilizes the RDS 80 (FIG. 1B) of the out-of-band deliverypath 256. Hubs 12 and DHCTs 16 transmit out-of-band data through thetransmission medium 250, and the out-of-band data is received in headend11 via out-of-band RDS 80. The out-of-band data is routed through router264 to an application server 216 or to control system 232. Theout-of-band control information includes such information as apay-per-view purchase instruction and a pause viewing command from thesubscriber location to a video-on-demand type application server locatedinternally or external to the headend 11, such as application server216, as well as any other data sent from the DHCT 16 (FIG. 1A) or hubs12, all of which will preferably be properly timed. The control system232 also monitors, controls, and coordinates all communications in thesubscriber television system, including video, audio, and data. Thecontrol system 232 can be located at the headend 11 or remotely.

The transmission medium 250 distributes signals from the headend 11 tothe other elements in the subscriber television system, such as a hub12, a node 13, and subscriber locations (FIG. 1A). The transmissionmedium 250 can incorporate one or more of a variety of media, such asoptical fiber, coaxial cable, and hybrid fiber-coax (HFC), satellite,direct broadcast, or other transmission media.

FIG. 3A is a block diagram illustration of an example DHCT 16 that iscoupled to a headend 11 and to a television, in accordance with oneembodiment of the invention. It will be understood that the DHCT 16shown in FIG. 3A is merely illustrative and should not be construed asimplying any limitations upon the scope of the preferred embodiments ofthe invention. For example, some of the functionality performed byapplications executed in the DHCT 16 (such as the MOD client application363) may instead be performed at the headend 11 and vice versa, or notat all in some embodiments. A DHCT 16 is typically situated at theresidence or place of business of a user and may be a stand-alone unitor integrated into another device such as, for example, a television setor a personal computer or other display devices or an audio device. TheDHCT 16 preferably includes a communications interface 342 for receivingsignals (video, audio and/or other data) from the headend 11 through thenetwork 18 and for providing any reverse information to the headend 11through the network 18.

The DHCT 16 further preferably includes at least one processor 344 forcontrolling operations of the DHCT 16, an output system 348 for drivingthe television display 341, and at least one tuner system 345 for tuninginto a particular television channel or frequency to be displayed andfor sending and receiving various types of data or media content to andfrom the headend 11. The DHCT 16 may include, in other embodiments,multiple tuners for receiving downloaded (or transmitted) media content.Tuner system 345 can select from a plurality of transmission signals(FIG. 1B) provided by the subscriber television system. Tuner system 345enables the DHCT 16 to tune to downstream media and data transmissions,thereby allowing a user to receive digital or analog media contentdelivered in the downstream transmission via the subscriber televisionsystem. The tuner system 345 includes, in one implementation, anout-of-band tuner for bi-directional quadrature phase shift keying(QPSK) data communication and a quadrature amplitude modulation (QAM)tuner (in band) for receiving television signals. Additionally, areceiver 346 receives externally generated information, such as userinputs or commands from an input device, such as remote control device380, or other devices.

According to another embodiment of the invention, a telephone modem (notshown) in the DHCT 16 can be utilized for upstream data transmission anda headend 11, hub 12 (FIG. 1A) or other component located upstream inthe STS 10 (FIG. 1A) can receive data from a telephone networkcorresponding with the telephone modem and can route the upstream datato a destination internal or external to the STS 10, such as anapplication data server in the headend 11 or content provider.

The DHCT 16 includes signal processing system 314, which comprisesdemodulating system 313 and transport demultiplexing and parsing system315 (herein demultiplexing system) to process broadcast media contentand/or data. One or more of the systems of signal processing system 314can be implemented with software, a combination of software andhardware, or preferably in hardware. Demodulating system 313 comprisesfunctionality for RF signal demodulation, either am analog transmissionsignal or a digital transmission signal. For instance, demodulatingsystem 313 can demodulate a digital transmission signal in a carrierfrequency that was modulated, among others, as a QAM-modulated signal.When tuned to a carrier frequency corresponding to an analog TV signaltransmission, demultiplexing system 315 is bypassed and the demodulatedanalog TV signal that is output by demodulating system 313 is insteadrouted to analog video decoder 316. Analog video decoder 316 convertsthe analog video signal (i.e. the video portion of a media contentinstance that comprises a video portion and an audio portion) receivedat its input into a respective non-compressed digital representationcomprising a sequence of digitized pictures and their respectivedigitized audio. Presented at the input to analog video decoder 316 isan analog video signal such as NTSC video comprising of audio and video.In one implementation, the video consists of a sequence of fields spacedapart at approximately one-sixtieth of a second. A pair of consecutivefields constitutes a picture. The odd field contains the odd-numberedlines of the picture and the even field contains the even-numbered linesof the picture. Analog video decoder 316 outputs the correspondingsequence of digitized pictures and respective digitized audio. Eachpicture is a two dimensional entity of picture elements and each pictureelement contains a respective set of values. A picture element valuecomprises luminance and chrominance information that are representativeof brightness and color information at the spatial location of thepicture element within the picture.

Digitized pictures and respective audio output by analog video decoder316 are presented at the input of compression engine 317. Digitizedpictures and respective audio output by analog video decoder 316 canalso be presented to an input of media engine 322 via an interface (notshown) dedicated for non-compressed digitized analog video and audio,such as ITU-656, for display on TV 341. Compression engine 317 iscoupled to localized memory 349, preferably DRAM 352, for input andprocessing of the input digitized pictures and their respectivedigitized audio. Alternatively, compression engine 317 can have its ownintegrated memory (not shown). Compression engine 317 processes thesequence of digitized pictures and digitized audio and converts theminto a video compressed stream and an audio compressed stream,respectively. The compressed audio and video streams are produced inaccordance with the syntax and semantics of a designated audio and videocoding method, such as specified by the MPEG-2 audio and MPEG-2 videoISO standard, so that they can be interpreted by video decoder 323 andaudio decoder 325 for decompression and reconstruction at a future time.Each compressed stream consists of a sequence of data packets containinga header and a payload. Each header contains a unique programidentification, or PID, associated with the respective compressedstream.

Compression engine 317 multiplexes the audio and video compressedstreams into a transport stream, such as an MPEG-2 transport stream, foroutput. Furthermore, compression engine 317 can preferably compressaudio and video corresponding to more than one program in parallel(e.g., two tuned analog TV signals) and to multiplex the respectiveaudio and video compressed streams into a single transport stream.Output of compressed streams and/or transport streams produced bycompression engine 317 is input to signal processing system 314. Parsingcapabilities 315 within signal processing 314 allow for interpretationof sequence and picture headers, for instance, annotating theirlocations within their respective compressed stream for future retrievalfrom storage device 373. A compressed analog media content instance(e.g., TV program episode, or show) corresponding to a tuned analogtransmission channel can be output as a transport stream by signalprocessing 314 and presented as input for storage in storage device 373via interface 375 as will be described below. The packetized compressedstreams can be also output by signal processing 314 and presented asinput to media engine 322 for decompression by video decompressionengine 323 and audio decompression engine 325 for its display on TV 341,as will be described below.

Demultiplexing system 315 can include MPEG-2 transport demultiplexing.When tuned to carrier frequencies carrying a digital transmissionsignal, demultiplexing system 315 enables the separation of packets ofdata, corresponding to the compressed streams of information belongingto the desired media content instances, for further processing.Concurrently, demultiplexing system 315 precludes packets in themultiplexed transport stream that are irrelevant or not desired, such aspackets of data corresponding to compressed streams of media contentinstances of other media content signal sources (e.g. other TVchannels), from further processing.

Parsing capabilities of demultiplexing system 315 include reading andinterpreting the received transport stream without disturbing itscontent, such as to interpret sequence and picture headers, forinstance, to annotate their locations within their respective compressedstream for future retrieval from storage device 373. Thus, thecomponents of signal processing system 314 are capable of QAMdemodulation, forward error correction, and demultiplexing MPEG-2transport streams, and parsing packetized elementary streams andelementary streams. A compressed media content instance corresponding toa tuned carrier frequency carrying a digital transmission signal can beoutput as a transport stream by signal processing 314 and presented asinput for storage in storage device 373 via interface 375 as will bedescribed below. The packetized compressed streams can be also output bysignal processing 314 and presented as input to media engine 322 fordecompression by video decompression engine 323 and audio decompressionengine 325 as will be described below.

One having ordinary skill in the art will appreciate that signalprocessing system 314 will preferably include other components notshown, including memory, decryptors, samplers, digitizers (e.g.analog-to-digital converters), and multiplexers, among others. Further,other embodiments will be understood, by those having ordinary skill inthe art, to be within the scope of the preferred embodiments of thepresent invention, including analog signals (e.g. NTSC) that bypass oneor more elements of the signal processing system 314 and are forwardeddirectly to the output system 348. Further, outputs presented atcorresponding next-stage inputs for the aforementioned signal processingflow may be connected via accessible memory 349 in which the outputtingdevice stores the output data and the inputting device thereafter inputsthe output data written to memory 349 by the respective outputtingdevice. Outputting and inputting devices include analog video decoder316, compression engine 317, media engine 322, signal processing system314, and components or subcomponents thereof. Further, it will beunderstood by those having ordinary skill in the art that components ofsignal processing system 314 can be spatially located in different areasof the DHCT 16. Further, it will be understood by those having ordinaryskill in the art that, although the components of signal processingsystem 314 are illustrated as being in communication with an incomingsignal from the communications interface 342, the signal may notnecessarily be in the order shown for all signals.

The DHCT 16 also includes media engine 322, which includes digital videodecoder 323 also known as video decompression engine, and digital audiodecoder 325 also known as audio decompression engine, and other digitalsignal processing components not shown, as would be appreciated by thosehaving ordinary skill in the art. For example, demultiplexing system 315is in communication with tuner system 345, and processor 344 to effectreception of digital compressed video streams, digital compressed audiostreams, and data streams corresponding to one or more media contentinstances to be separated from other media content instances and/orstreams transported in the tuned transmission channel and to be storedin a first part (not shown) of DRAM 352 of DHCT 16 assigned to receivepackets of one or more media content instances. Other dedicated memorymay also be used for media content instance packets.

Furthermore, while conducting this process, demultiplexing system 315demultiplexes and separates desired compressed streams from the receivedtransport stream without disturbing its content. Further, parser 315parses (i.e., reads and interprets) compressed streams such as tointerpret sequence headers and picture headers, and deposits a transportstream carrying compressed streams of a first media content instanceinto DRAM 352. Processor 344 causes transport stream in DRAM 352 to betransferred to the storage device 373 via interface 375. Under programcontrol by processor 344, the demultiplexing system 315 in communicationwith the digital video decoder 323, storage device 373, and processor344 effect notification and/or transfer of received packets of one ormore compressed streams corresponding to one or more media contentinstances from a first part of DRAM 352 to a second part (not shown) ofDRAM 352 assigned to the digital video decoder 323 and the digital audiodecoder 325. Alternatively, media engine 322 can have access to adedicated localized DRAM (not shown). Upon demultiplexing and parsingthe transport stream carrying one or more media content instances,signal processing system 314 outputs to DRAM 352 ancillary data in theform of a table or data structure (not shown) comprising the relative orabsolute location of the beginning of certain pictures in the compressedmedia content instance for convenience in retrieval during futureoperations.

In another embodiment, according to a plurality of tuners, andrespective number of demodulating systems 313, demultiplexing systems315, and signal processing systems 314, a respective number of broadcastdigital media content instances are received and routed to the hard disk300 of storage device 373 simultaneously. Alternatively, a singledemodulating system 313, a single demultiplexing system 315, and asingle signal processing system 314, each with sufficient processingcapabilities can serve to process more than one digital media contentinstance.

In another embodiment according to the aforementioned description, afirst tuner of tuning system 345 receives an analog video signalcorresponding to a first media content instance and a second tunersimultaneously receives a digital compressed stream corresponding to asecond media content instance. First media content instance is processedas an analog video signal and second media content instance is processedas a digital compressed stream as described above.

In one implementation, compression engine 317 can output formattedMPEG-2 or MPEG-1 packetized elementary streams (PES) inside a transportstream, all compliant to the syntax and semantics of the ISO MPEG-2standard. Alternatively, compression engine 317 can output other digitalformats that are compliant to other standards. The digital compressedstreams output by compression engine 317 corresponding to a mediacontent instance are deposited in local memory for compression engine317 and routed to demultiplexing system 315. Demultiplexing system 315parses (i.e., reads and interprets) the transport stream generated bycompression engine 317 without disturbing its content, such as tointerpret picture headers, and deposits the transport stream into DRAM352. Processor 344 causes transport stream in DRAM 352 to be transferredto the storage device 373. While parsing the transport stream,demultiplexing system 315 outputs to memory 352 ancillary data in theform of a table or data structure (not shown) comprising the relative orabsolute location of the beginning of certain pictures in the compressedmedia content stream for the media content instance for convenience inretrieval during future operations. In this way, random accessoperations such as fast forward, rewind, and jumping to a location inthe compressed media content instance can be attained.

In another embodiment, according to a plurality of tuners, a respectivenumber of analog video decoders 316, and a respective number ofcompression engines 317, the aforementioned compression of analog videoand audio is performed and routed to hard disk 300 of the storage device373 simultaneously for a respective number of analog media contentinstances. Alternatively, a single compression engine with sufficientprocessing capabilities can serve to compress more than one analog mediacontent instance.

The DHCT 16 may also include one or more wireless or wired interfaces,also called communication ports 374, for receiving and/or transmittingdata to other devices. For instance, the DHCT 16 may feature USB(Universal Serial Bus), Ethernet (for connection to a computer),IEEE-1394 (for connection to media content devices in an entertainmentcenter), serial, and/or parallel ports. The user inputs may be, forexample, provided by an input device including a computer or transmitterwith buttons or keys located either on the exterior of the terminal orby a hand-held remote control device 380 or keyboard that includesuser-actuated buttons, or even aural input.

The DHCT 16 includes at least one storage device 373 to provide storagefor downloaded media content. Storage device 373 can be an opticalstorage device or a magnetic storage device, among others, and ispreferably a hard disk drive. Storage device 373 comprises storage formedia content and/or data that can be written to for storage and laterread from for retrieval for presentation. The storage device 373preferably includes at least one hard disk 300. Throughout thisdisclosure, references relating to writing to or reading from thestorage device 373, or references regarding recordings from or to thestorage device 373 will be understood to mean that such read or writeoperations are occurring to the actual medium (for example, the harddisk 300) of the storage device 373. Preferably located in each harddisk 300 is one or more time shift buffers (TSBs) 378, which comprise aplurality of clusters (as described below) for temporarily receivingmedia content and/or data. The storage device 373 is also comprised of acontroller 379 that receives operating instructions from the devicedriver 311 of the operating system 353 (as described below) andimplements those instructions to cause read and/or write operations tothe hard disk 300. The device driver 311 communicates with the storagedevice controller 379 to format the hard disk 300, causing the hard diskto be divided radially into sectors 301 and concentric circles calledtracks 302, as illustrated by the block diagram illustration of theexample hard disk 300 in FIG. 3B. Note from FIG. 3B that the same numberof sectors 301 per track 302 are illustrated, but other embodiments witha different number of tracks per side, sectors per track, bytes persector, and in different zones of tracks, are within the scope of thepreferred embodiments of the invention. The sector 301 is the basic unitof storage on the hard disk 300. In one implementation, each sector 301of a hard disk 300 can store 512 bytes of user data. While data isstored in 512-byte sectors on the hard disk 300, the cluster, such asexample cluster 303, is typically the minimum unit of data storage theoperating system 353 uses to store information. Two or more sectors on asingle track make up a cluster.

Referring again to FIG. 3A, storage device 373 is preferably internal toDHCT 16, coupled to a common bus through a communication interface 375,preferably an integrated drive electronics (IDE) or small computersystem interface (SCSI), although IEEE-1394 or USB, among others, can beused. In other embodiments, the storage device 373 can be externallyconnected to (and thus removable from) the DHCT 16 via a communicationport 374 implemented as IEEE-1394 or USB or as a data interface portsuch as a SCSI or an IDE interface. In one implementation, under theauspices of the real-time operating system 353 (as described below) andexecuted by processor 344, and in coordination with the personal videorecording (PVR) application client 377 and the device driver 311 (thelatter two components described below), downloaded media content (hereinunderstood to also refer to other types of data, in addition to, orinstead of, media content instances) are received in DHCT 16 viacommunications interface 342 and stored in a temporary cache (not shown)in memory 349. The temporary cache is implemented and managed to enablemedia content transfers from the temporary cache to storage device 373,or, in concert with the insertion of a newly arriving media content intothe temporary cache. In one implementation, the fast access time andhigh data transfer rate characteristics of the storage device 373enables media content to be read from the temporary cache in memory 349and written to storage device 373 in a sufficiently fast manner.Orchestration of multiple simultaneous data transfer operations iseffected so that while media content is being transferred from the cachein memory 349 to storage device 373, new media content is received andstored in the temporary cache of memory 349. In other implementations,the downloaded media content is received through communications port 374in the DHCT 16 and then transferred directly to storage device 373, thusbypassing the temporary cache.

Processor 344 in communication generally with device driver 311 andstorage device controller 379 and demultiplexing system 315 effectretrieval of compressed video streams, compressed audio streams, anddata streams corresponding to one or more media content instances fromstorage device 373. Retrieved streams are deposited in an output cachein storage device 373 and transferred to memory 352, and then processedfor playback according to mechanisms that would be understood by thosehaving ordinary skill in the art. In some embodiments, the media contentinstances are retrieved and routed from the hard disk 300 to the videoand audio decoding system simultaneously, and then further processed foreventual presentation on a display device or other device.

In one implementation, the DHCT 16 includes system memory 349, whichincludes FLASH memory 351 and dynamic random access memory (DIAM) 352,for storing various applications, modules and data for execution and useby the processor 344. Basic functionality of the DHCT 16 is provided byan operating system 353 that is primarily stored in FLASH memory 351.The operating system 353 includes, among other elements, at least oneresource manager 367 that provides an interface to resources of the DHCT16 such as, for example, computing resources. Also included withinoperating system 353 is one or more device drivers that providesoperating instructions to an internal or external storage device, suchas storage device 373, and other peripheral devices not shown. In oneimplementation, device driver 311 provides operating instructions to thestorage device controller 379 of the storage device 373 to effect, amongother functions, read and/or write operations to the hard disk 300 ofthe storage device 373. The device driver 311 includes several drivermodules, including MPEG transport 361, audio/video (A/V) File SystemManager 368, and DVR Manager 369. MPEG transport 361 providesfunctionality for decoding (i.e. providing operating instructions to themedia engine 322 for MPEG A/V decoding) and playing A/V encoded in MPEGtransport streams. A/V File System Manager 368, under control of the DVRManager 369, enables MPEG transport 361 to effect the decoding andplayback functionality by effecting retrieval of MPEG A/V media contentfrom the storage device 373 and providing the content to the audiodecoder 325 and video decoder 323 of media engine 322. AV File SystemManager 368 also provides functionality for the recording of MPEGstreams. The AV File System Manager 368 manages data about each recordedmedia content instance including where it is stored physically (i.e.cluster management, as described below) and the locations of I-Frames (aseries of “still pictures” of an MPEG transport stream that the DHCT 16can use to provide a display during rewind or fast forward operations).

The AV File System Manager 368 also provides a software generatedpointer, called Normal Play Time (NPT), which points to locations withinfiles and locations within media content instances within those files.Based on the Lightweight Stream Control Protocol, NPT can be thought ofas the clock associated with a video asset (as distinguished fromreal-time clock (not shown) for the DHCT 16). For every file that iscreated for media content downloaded to the storage device 373, an NPTis generated. There is an NPT for the read head of the storage device373 and for the write head of the storage device 373. For writingcontent to the storage device 373 for a newly created file (e.g. a TSBfile), an NPT is created for the write head of the storage device 373with an initial value of zero. In one implementation, the AV File SystemManager 368 receives a periodic interrupt (for example every 5-10 msec)set up by the PVR application 377 through the computer services of theoperating system 353. This interrupt is synchronized with the internalreal-time clock (not shown) of the DHCT 16 in order to advance thepointer (i.e. the NPT) at a substantially constant rate. The NPTcontinues to increase in value (from an initial value of zero) until theassociated file is closed. For the read head of the storage device 373,the NPT starts at 0 at the start of the file, advances in real time innormal play mode, advances faster than real time in fast forward mode,decrements in rewind mode, and is fixed when the video is paused. TheDVR Manager 369 is the driver module that controls the operation of theMPEG encoding and MPEG decoding (through MPEG transport 361), and usesthe services of the AV File System Manager 368 to store and providefunctionality for the playback of files. It will be understood thatreferences to the device driver 311 will include one or more, or acombination of one or more of the aforementioned device driver modules.

One or more programmed software applications, herein referred to asapplications, are executed by utilizing the computing resources in theDHCT 16. The applications, or application clients, may be resident inFLASH memory 351 or downloaded (or uploaded) into DRAM 352. Applicationsstored in FLASH memory 351 or DRAM 352 are executed by processor 344(e.g., a central processing unit or digital signal processor) under theauspices of the operating system 353. Data required as input by anapplication is stored in DRAM 352 or FLASH memory 351 and read byprocessor 344 as need be during the course of application execution.Input data may be data stored in DRAM 352 by a secondary application orother source, either internal or external to the DHCT 16, or possiblyanticipated by the application and thus created with the application atthe time it was generated as a software application, in which case it isstored in FLASH memory 351. Data generated by an application is storedin DRAM 352 by processor 344 during the course of application execution.DRAM 352 also includes application memory 370 that various applicationsmay use for storing and/or retrieving data.

An application referred to as navigator 355 is also resident in FLASHmemory 351 for providing a navigation framework for services provided bythe DHCT 16. The navigator 355 registers for and in some cases reservescertain user inputs related to navigational keys such as channelincrement/decrement, last channel, favorite channel, etc. The navigator355 also provides users with television related menu options thatcorrespond to DHCT functions such as, for example, blocking a channel ora group of channels from being displayed in a channel menu.

The FLASH memory 351 also contains a platform library 356. The platformlibrary 356 is a collection of utilities useful to applications, such asa timer manager, a compression manager, a configuration manager, an HTMLparser, a database manager, a widget toolkit, a string manager, andother utilities (not shown). These utilities are accessed byapplications via application programming interfaces (APIs) as necessaryso that each application does not have to contain these utilities. Twocomponents of the platform library 356 that are shown in FIG. 3A are awindow manager 359 and a service application manager (SAM) client 357.

The window manager 359 provides a mechanism for implementing the sharingof the screen regions and user input. The window manager 359 on the DHCT16 is responsible for, as directed by one or more applications,implementing the creation, display, and de-allocation of the limitedDHCT 16 screen resources. It allows multiple applications to share thescreen by assigning ownership of screen regions, or windows. The windowmanager 359 also maintains, among other things, a user input registry350 in DRAM 352 so that when a user enters a key or a command via theremote control device 380 or another input device such as a keyboard ormouse, the user input registry 350 is accessed to determine which ofvarious applications running on the DHCT 16 should receive datacorresponding to the input key and in which order. As an application isexecuted, it registers a request to receive certain user input keys orcommands. When the user presses a key corresponding to one of thecommands on the remote control device 380, the command is received bythe receiver 346 and relayed to the processor 344. The processor 344dispatches the event to the operating system 353 where it is forwardedto the window manager 359 which ultimately accesses the user inputregistry 350 and routes data corresponding to the incoming command tothe appropriate application.

The SAM client 357 is a client component of a client-server pair ofcomponents, with the server component (not shown) being located on theheadend 11, preferably in the control system 232 (FIG. 2). A SAMdatabase 360 (i.e. structured data such as a database or data structure)in DRAM 352 includes a data structure of services and a data structureof channels that are created and updated by the headend 11. Herein,database will refer to a database, structured data or other datastructures as is well known to those of ordinary skill in the art. Manyservices can be defined using the same application component, withdifferent parameters. Examples of services include, without limitationand in accordance with one implementation, presenting televisionprograms (available through a WatchTV application 362), pay-per-viewevents (available through a PPV application 364), digital music (notshown), media-on-demand (available through an MOD application 363), andan interactive program guide (IPG) 397. In general, the identificationof a service includes the identification of an executable applicationthat provides the service along with a set of application-dependentparameters that indicate to the application the service to be provided.As an example, a service of presenting a television program (mediacontent instance) could be executed by the WatchTV application 362 witha set of parameters specifying the HBO to view HBO or with a separateset of parameters to view CNN. Each association of the applicationcomponent (tune video) and one parameter component (HBO or CNN)represents a particular service that has a unique service I.D. The SAMclient 357 also interfaces with the resource manager 367, as discussedbelow, to control resources of the DHCT 16.

Application clients can also be downloaded into DRAM 352 at the requestof the SAM client 357, typically in response to a request by the user orin response to a message from the headend 11. In the example DHCT 16illustrated in FIG. 3A, DRAM 352 includes a media-on-demand application(MOD) 363, an e-mail application 365, PVR application 377, and a webbrowser application 366. It should be clear to one with ordinary skillin the art that these applications are not limiting and merely serve asexamples for embodiments of the invention. Furthermore, one or more DRAMbased applications may be resident, as an alternative embodiment, inFLASH memory 351. These applications, and others provided by thesubscriber television system operator, are top-level software entitieson the network for providing services to the user.

In one implementation, applications executing on the DHCT 16 work withthe navigator 355 by abiding by several guidelines. First, anapplication utilizes the SAM client 357 for the provision, activation,and suspension of services. Second, an application shares DHCT 16resources with other applications and abides by the resource managementpolicies of the SAM client 357, the operating system 353, and the DHCT16. Third, an application handles situations where resources are onlyavailable with navigator 355 intervention. Fourth, when an applicationloses service authorization while providing a service, the applicationsuspends the service via the SAM (the navigator 355 will reactivate anindividual service application when it later becomes authorized).Finally, an application client, or application, is designed to not haveaccess to certain user input keys reserved by the navigator (i.e.,power, channel +/−, volume +/−, etc.).

The MOD client application 363 provides the user with lists of availablemedia content titles for each media content instance to choose from andwith media content instances requested by the user. The MOD clientapplication 363 provides media content to the user by engaging,typically, in a direct two-way IP (Internet Protocol) connection withVOD content servers (not shown) that would be located, in oneembodiment, in the headend 11 (FIG. 2).

An executable program or algorithm corresponding to an operating system(OS) component, or to a client platform component, or to an applicationclient, or to respective parts thereof, can reside in and execute out ofDRAM 352 and/or FLASH memory 351. Likewise, data input into or outputfrom any executable program can reside in DRAM 352 or FLASH memory 351.Furthermore, an executable program or algorithm corresponding to anoperating system component, or to a client platform component, or to anapplication client, or to respective parts thereof, can reside in FLASHmemory 351, or in a local storage device (such as storage device 373)externally connected to or integrated into DHCT 16 and be transferredinto DRAM 352 for execution. Likewise, data input for an executableprogram can reside in FLASH memory 351 or a storage device and betransferred into DRAM 352 for use by an executable program or algorithm.In addition, data output by an executable program can be written intoDRAM 352 by an executable program or algorithm and be transferred intoFLASH memory 351 or into a storage device. In other embodiments, theexecutable code is not transferred, but instead, functionality iseffected by other mechanisms.

Permanent recordings and other write operations of media content to thestorage device 373 are primarily effected by a PVR architecturecomprising the PVR application 377 and the device driver 311. At onelevel of abstraction, the PVR application 377 provides high-levelcontrol for writing of digital data from multiple input streams to thestorage device 373 for both scheduled permanent recordings and permanentrecordings from a time shift buffer (TSB) 378, or writes to the TSB 378.The TSB 378 is a configurable allocation of hard disk clusters thatstore the data downloaded from the data streams. More than one TSB 378may be used, for instance, one TSB per tuner in the case of a DHCT 16with multiple tuners. Through mechanisms explained below, media contentreceived into the TSB 378 will have a temporary recording designation.That is, media content stored in clusters of the TSB 378 will have atemporary residence. This receiving of media content into the TSB 378for temporary residence will also be referred to as buffering. The mediacontent stored in the TSB 378 will either be deleted (i.e. the clustersstoring the media content will be configured as writeable for eventualwrite operations that overwrite the media content within those clusters)or retained (through election by the user) as a permanent recording. Apermanent recording will be understood to mean media content that isstored for an extended period of time as decided by the user. Permanentrecordings are stored in non-buffer clusters (i.e. not in clusters ofthe TSB 378) that are not used for the TSB 378 in instances when theuser elects in advance to make a scheduled recording of a media contentinstance that has not yet been tuned to at the DHCT 16. A permanentrecording can also be achieved by selecting a media content instancestored in the TSB 378 and designating the media content instance aspermanent. Further, when the media content instance is designated aspermanent, the associated TSB clusters are configured for eventualdesignation as non-buffer clusters (i.e. permanent recording clusters).Thus, permanent recordings will preferably be more permanent than mediacontent in the TSB 378, and permanent recordings can eventually bedeleted from the disk space, typically at the explicit request of auser, as one example. This deletion occurs, in one implementation, byconfiguring the associated non-buffer clusters as writeable, and thuseventually available for the TSB 378 or scheduled recordings. As part ofthe high level control provided by the PVR application 377, the PVRapplication 377 also provides media content instance data management anduser interfaces. With respect to media content instance data management,the PVR application 377 maintains the media content instance guide dataon the hard disk 300 for all permanently recorded files and TSB 378files with their associated media content.

FIG. 4A is a programming diagram of example software programming code inconventional “C” computer language that can be used to create andmaintain the data structure for each media content instance receivedinto the TSB 378 (FIG. 3A). Line 410 represents a pointer to the file inwhich the media content instance is located. For instance, if the mediacontent instance is located in the TSB 378, the pointer is to the TSBfile. Line 415 is a Boolean expression or “flag” indicating to the PVRapplication 377 (FIG. 3A) whether the media content instance is apermanent recording (and thus a Boolean value of “1”) or not a permanentrecording (and thus a Boolean value of “0”). Once the desired mediacontent instance is designated as permanent, the desired media contentinstance temporarily remains as part of the TSB file it was initiallywritten to, as well as, being designated as a permanent recorded file.Both of these files share the same clusters storing the desired mediacontent instance. Thus, although designated as permanent, the mediacontent instance can still be viewed from the TSB 378 (and thus the TSBfile) up until the time the cluster storing the designated media contentinstance is completely deallocated from the TSB 378 (and a subsequentreplacement cluster is allocated for the TSB 378). In this manner, oneor more permanent files can be created from the TSB file whilemaintaining the TSB 378 as substantially constant, as explained furtherbelow.

If the user does not choose to designate the desired media contentinstance as a permanent recording when the instance was first receivedinto the TSB 378 (FIG. 3A), the user has up until immediately before thetime the device driver 311 (FIG. 3A) deallocates the clusters storingthe desired media content instance from the TSB 378 to choose todesignate the desired media content instance as a permanent recording.Line 420 corresponds to the handle, or reference, of the TSB file. Thehandle is a mechanism by which the device driver 311 can access the TSBfile information when the TSB file is open. Line 425 is a pointer todatabase records (or other data structures) containing media contentinstance guide information. Line 430 and line 435 correspond to thedownload start and end clock time (i.e. real-time), respectively, of themedia content instance. Line 437 and line 440 corresponds to thestarting and stopping location, in terms of NPT, of the downloaded mediacontent instance. The device driver 311 maintains the mapping betweenNPT and the cluster/sector locations of media content in a separatelook-up table data structure (not shown) located on the hard disk 300(FIG. 3B). In one embodiment, the device driver 311 can sample thecurrent write location (i.e. cluster and sector location provided by thestorage device controller 379 of FIG. 3A) as the write head of thestorage device 373 (FIG. 3A) advances and store that cluster and sectorlocation in the look-up table data structure along with a correspondingNPT value. This sampling can occur, for example, every 5-10 msec. In analternative embodiment, the device driver 311 can record an initialsample and through an interpolation algorithm estimate file locationsand locations within said files. When the PVR application 377 (FIG. 3A)references a particular media content instance, the PVR application 377passes the stored start and stop NPT values (from line 437 and 440) tothe device driver 311, and the device driver 311 determines the harddisk locations from the look-up table data structure. Line 445represents an integer value corresponding to the handle value (explainedbelow) for the TSB file. Line items 450 and 455 correspond to theinteger values for the start and stop NPT, respectively, for the TSBfile containing the downloaded media content instances. Note that theprogramming structure described above is for every media contentinstance currently residing in the TSB 378. This structure can changeonce the buffered media content instance is made relatively permanentand eventually becomes no longer part of the TSB 378. For example, thefields tsbHandle (line 445), tsbStartNPT (line 450), and tsbStopNPT(line 455) would not necessarily be part of a programming structuredescribing permanently recorded media content instances that are notpart of the TSB 378. FIG. 4B is a programming diagram of examplesoftware programming code in conventional “C” computer language that canbe used to create and maintain a data structure consisting of an orderedlist of media content instance characterizing data for each mediacontent instance in the TSB 378 (FIG. 3A). Line item 460 provides aninteger value for the handle, with “0” corresponding to a closed file.Line item 465 provides a list of data corresponding to the datastructure depicted in FIG. 4A. Line item 470 provides an integer valuefor the starting location (NPT) of the TSB 378. Line item 475 providesthe live point, or current write location to the TS13 378.

At a lower level of abstraction of the PVR architecture (i.e. forrecording and read/write functionality to the storage device 373 of FIG.3A) is the device driver 311 (FIG. 3A). The device driver 311, as partof the PVR architecture, provides for a file allocation system thatprovides cluster level management at the hard disk 300 (FIG. 3B). Morespecifically, the device driver 311 promotes the use of cross-linkedclusters. Cross-linked clusters describe a situation that occurs whentwo files reference the same cluster. In one embodiment, the devicedriver 311 creates and manages a special file allocation table (FAT) topromote file sharing in individual clusters. In one embodiment, thisfile sharing aspect enables one or more permanently recorded files to becreated from the TSB file and, according to mechanisms described below,enables a substantially constant TSB 378 to be maintained. Otherbenefits of file sharing include, among others, recording of full,contiguous media content instances directly from the TSB 378 (FIG. 3A)while preserving disk space and allowing the user to traverse the entireTSB 378, including shows (i.e. media content instances) designated aspermanently recorded.

FIG. 5A is a block diagram illustration of an example FAT 500, inaccordance with one embodiment of the invention. The operating system353, device driver 311, and controller 379 (FIG. 3A) cooperatecontinually to create the FAT 500 and store it in one or more hard disksectors, after which it is manipulated in DRAM 352 (FIG. 3A). Withcontinued reference to FIG. 3A and 3B, the controller 379 (FIG. 3A)translates commands from the device driver 311 (FIG. 3A) into voltagefluctuations that force the read/write heads (not shown) of the storagedevice 373 (FIG. 3A) across the hard disk 300 (FIG. 3B). The devicedriver 311 receives commands from the PVR application 377 (FIG. 3A)through the operating system 353 (FIG. 3A) acting as an intermediary. Inother embodiments, the device driver 311 can receive instructionsdirectly from the PVR application 377. The device driver 311 is alsoresponsible for the initial creation of the FAT 500 at the DHCT 16 (FIG.3A) initialization, including designating the FAT location on the harddisk 300. Maintenance of the FAT 500 includes mirroring the FAT 500 inDRAM 352 where the device driver 311 coordinates the updating of the FATwith the processor 344 (FIG. 3A). Periodically (for example, every 3-4seconds), the processor 344 causes the FAT with its updated data to beflushed, or mirrored, back to the hard disk 300. The device driver 311correlates locations on the hard disk 300 (FIG. 3B), communicated fromthe controller 379, to normal play time (NPT) values that it passes tothe PVR application 377 (through the operating system 353). The PVRapplication 377 uses NPT values to enable the PVR application 377 tolocate and permanently record media content on the hard disk 300.

The operating system 353 (FIG. 3A) maintains a directory of files andpointers to file entries in the FAT 500. The operating system 353 alsosynchronizes the DHCT 16 (FIG. 3A) internal clock (not shown) with thereal time received from messages from the headend 11 (FIG. 2). Thedevice driver 311 (FIG. 3A) is often considered a sub-set of theoperating system 353, and one or more functions described as beingperformed by the device driver 311 can be, in some embodiments,performed by the operating system 353. The example FAT 500 comprises twodata structures. First data structure 501 comprises a data structure ofseveral column entries, including a filename 520, a cluster list 530,and a starting sector 540 and ending sector 550. As the TSB 378 (FIG.3A) uses all of the sectors of the TSB 378, unlike a permanentlyrecorded media content instance that may be “carved” out of sectors of aparticular cluster, as explained below, there are no sector values,maintained in 540 or 550 for TSB files. A file is created for every TSB378 and every permanently recorded media content instance (as requestedby a user or designated for permanent recording through a preferencefilter). The device driver 311 maintains a list of clusters for eachfile in the first data structure 501, as indicated by cluster list 530.Second data structure 502 of the FAT 500 comprises a list of all of theclusters of the storage device disk. The cluster entry 560 referencesthe cluster number on the disk. Although described with two datastructures, the FAT 500 may be implemented with a single data structureor more than two data structures without diverging from the scope of thepreferred embodiments. Note also that in other embodiments, the filenameentry 520 may be excluded from the FAT 500 and the directory entrymaintained by the operating system 353, which may include pointers tothe cluster list 530 for every file on the hard disk 300, may be used toassociate files to the list of clusters. The LinkedFiles entry 570indicates the number of files that share a particular cluster number.For example, if no clusters were allocated to a file, the LinkedFilesentry 570 for a particular cluster number in the cluster entry 560 wouldbe zero (“0”). If a cluster was allocated for one file, or a portion ofone file, the LinkedFiles entry 570 for that particular cluster numberwould be “1”. If two files share the same cluster, the LinkedFiles entry570 for that cluster number would be “2”, and so on.

To illustrate the operative features of the FAT 500, assume the initialcreation of a time shift buffer (TSB) file, or buffer file,corresponding to the buffer space, or TSB 378 (FIG. 3A), of the storagedevice disk space. When a TSB 378 is created, a specified number offree, or available, clusters, based on the desired TSB 378 size (e.g.gigabytes), are allocated by the device driver 311 (FIG. 3A). In oneimplementation, this size allocation of the TSB 378 can be userconfigurable via a user interface screen generated as part of a systemsettings menu (not shown). A default value can be communicated from theheadend 11 (FIG. 2), or contained as a setting within the PVRapplication 377 (FIG. 3A). In response to the request of the PVRapplication 377 to allocate disk space for the TSB 378 under a TSBfilename, the device driver 311, in communication with processor 344(FIG. 3A), causes the FAT 500 stored in one or more sectors in the diskto be mirrored in DRAM 352 (FIG. 3A) to effect operations to the FAT500. Periodically (for example, every 3-4 seconds), the processor 344causes the updated FAT 500 to be “flushed” or mirrored back to the harddisk 300 (FIG. 3B). The device driver 311 searches the second datastructure 502 of the FAT 500 for available clusters to allocate for theTSB 378, based on the size requirements provided by the PVR application377. Assume, in one example, the size requirements correspond to theamount of space corresponding to 5 clusters. From the example seconddata structure 502 of the FAT 500 (FIG. 5A), it is noted from clusterentry 560 that clusters 1,2,3, 5, and 7 each have a LinkedFiles entry570 of “0”, and thus are available. Note that the LinkedFiles entries570 for some of the other clusters include a “1” (for example, cluster1, signifying the use of that cluster for another file (not shown) or aninoperable cluster). The device driver 311 allocates clusters 1,2,3,5,and 7 for the TSB 378 and increments the LinkedFiles entry 570 for eachcluster, as shown in FIG. 5B.

The clusters allocated in this example of FIG. 5A-5F are not alladjacent clusters on the disk (e.g. 5 and 7). Thus, write operations(and read operations) are not necessarily to (or read from) contiguousclusters on a disk. Instead, clusters may be fragmented throughout thedisk space for a particular file. Fragmentation is especially evident asfiles are shared or deleted. Although conventional software is availableto defragment clusters, as is well known to those having ordinary skillin the art, the use or absence of defragmenting mechanisms do not effectthe scope of the preferred embodiments of the invention. The devicedriver 311 (FIG. 3A) updates the first data structure 501 to reflectthat a TSB 378 (FIG. 3A) is allocated in the disc space under thefilename TSBfile comprising clusters 1,2,3,5 and 7. When the TSBfile isopen, the operating system 353 (FIG. 3A) assigns a “handle” to theTSBfile (or any open file of the hard disk 300 (FIG. 3B)). The handle isassigned (and removed when the file is closed) by the operating system353, such that the handle exists in the operating system directory whilethe associated file is open, and the handle is deleted from thedirectory when the file is closed. The operating system 353 alsomaintains a pointer to the FAT first data structure 501 that includesthe filename and clusters associated with the handle in the directory.Thus, when the device driver 311 allocates clusters upon receiving thecommand to allocate space (in terms of size, as described above) fromthe PVR application 377 (FIG. 3A), the device driver 311 allocates therequired clusters, the operating system 353 assigns a handle to theseclusters and communicates the handle to the PVR application 377.

The handle is a pointer to a file, such as TSBfile, which enables thePVR application 377 (FIG. 3A) to reference the location of the file.When the PVR application 377 seeks to identify a file to the devicedriver 311 (FIG. 3A), the PVR application 377 passes the handle to thedevice driver 311. When the TSBfile is closed, for example when the usertunes to another channel, the data structure (or record) (FIG. 4B)maintaining, among other data, the variable for the handle for that fileis deleted and the handle is removed from the operating systemdirectory. It will be understood that, in the case of multiple TSBs (forexample, for multiple tuners), the same or similar aforementionedallocation and FAT updating process will occur as it does for one TSB378 (FIG. 3A).

Media content instances are sequentially written to the allocatedclusters 1,2,3,5, and 7 of the TSBfile. At media content instance breaks(i.e. end of a media content instance), and when the device driver 311(FIG. 3A) starts writing to a new cluster, the PVR application 377 (FIG.3A) queries the device driver 311 for certain information. The PVRapplication 377 makes the determination as to when a particular show(i.e. media content instance) is over, in one embodiment, based on mediacontent instance guide data the PVR application 377 stores, as will beexplained in further detail below. When the PVR application 377 receivesand stores the media content instance guide data, the PVR application377 sets up a timer interrupt (or in other embodiments, polls theoperating system 353) with the operating system 353 (FIG. 3A). Theoperating system 353, in coordination with a real-time clock (not shown)within the DHCT 16 (FIG. 3A), alerts the PVR application 377 (FIG. 3A)to the scheduled end time of the received media content instance (andthe start of the next media content instance). The PVR application 377passes to the device driver 311 the handle of the file being written to(in this example, “1” for the TSBfile), and the device driver 311responsively communicates to the PVR application 377 the current writelocation (in NPT), and the stopping and starting location (in NPT)corresponding to the stop location of the completed media contentinstance and the start of a new media content instance, respectively.Assume a user has decided to permanently record one of the media contentinstances out of the TSB 378 (FIG. 3A). The user can rewind through theTSB 378 to view the buffered (i.e. temporarily recorded) media contentinstances on a screen display (as will be described in greater detailbelow). Alternatively, the user can be presented with a list of bufferedmedia content instances resident in the TSB 378 (and encompassed byTSBfile) with a selection entry to request a permanent recording.

Once the user reaches the real-time playback position of a media contentinstance in the TSB 378 (FIG. 3A), the user can select playback orrecord from, for example, an input device such as remote control device380 (FIG. 3A). The PVR application 377 provides the device driver 311with the TSBfile handle and the start and end location (in NPT) of therequested media content instance (as previously provided by the devicedriver 311). The PVR application 377 (FIG. 3A) requests that the desiredmedia content instance be recorded under a filename, for examplefilerecord1. The operating system 353 (FIG. 3A) returns to the PVRapplication 377 the handle to filerecord1 and the device driver 311(FIG. 3A) returns the start and calculated stop location (in NPT asdescribed below) of the permanently recorded media content instance tothe PVR application 377 as well. As shown in FIG. 5C, the device driver311 uses the location information of the desired media content instancefrom the PVR application 377 and updates the FAT 500. The updateincludes entering the filename filerecord1, and the clusters and sectorscorresponding to the start and end location of the permanently recordedmedia content instance (assume the desired media content instance isencompassed by clusters 2 and 3). It will be understood that the choiceof sector location values and clusters in FIGS. 5B through 5F arearbitrary and chosen for the sake of illustrating that the FAT 500 iscontinuously updated upon allocation and deallocation of clusters.Further, the device driver 311 updates the second data structure 502 byincrementing the LinkedFiles entry 570 to “2” for the affected clusterentries 560 (here, 2 and 3), reflecting the fact that the correspondingclusters are shared by two files (TSBfile and recordfile1). The “2” (orany LinkedFiles entry 570 greater than “1”) for a cluster in the TSB 378will alert the device driver 311 that no attempts should be made by thedevice driver 311 to automatically delete the media content instancestored in that cluster after a shift in the TSB (i.e., as new clustersare written to).

As the TSB 378 shifts (i.e. herein understood to mean as the devicedriver 311 (FIG. 3A) advances its write position to the hard disk 300(FIG. 3B)), the device driver 311 will continuously update the FAT 500first data structure 501 cluster list 530 to reflect the fact that newclusters are continuously being allocated for the TSB 378. When the TSBcapacity is about to be exceeded, the device driver 311 will allocatenew clusters to replace the oldest deallocated clusters. For example,and referring to FIG. 5C, cluster 1 has a LinkedFiles entry 570 of “1”,thus indicating to the device driver 311 that cluster 1 shares no otherfiles with TSBfile (i.e. no permanently recorded files). Thus, once theTSB capacity is substantially reached, cluster 1 will be deallocated anddecremented (i.e. its LinkedFiles entry 570 decremented) by the devicedriver 311. Further, the device driver 311 searches the FAT 500 foranother available cluster (i.e. a cluster with a LinkedFiles entry 570of “0”). Cluster 12 is the next available cluster (i.e. it has aLinkedFiles entry 570 of zero), and thus cluster 12 will be allocatedfor the TSB 378. Alternatively, cluster 1, now with a LinkedFiles entry570 of “0”, could be re-allocated to the TSB 378. FIG. 5D illustratesthe changes to the FAT 500 resulting from the device driver deallocatingcluster 1 and allocating cluster 12 for the TSB 378. As noted, thedevice driver 311 decrements the LinkedFiles entry 570 of cluster 1 tozero, making it available for later write operations, and increments theLinkedFiles entry 570 of cluster 12 to “1”. Further, the first datastructure 501 is also updated with the new cluster list.

As the TSB 378 (FIG. 3A) shifts, the device driver 311 (FIG. 3A) notesfrom the FAT 500 that the next cluster (i.e. cluster 2) includes aLinkedFiles entry 570 of “2” as a result of part of filerecord1 sharingcluster 2 with TSBfile. The “2” in the LinkedFiles entry 570 is a noticeto the device driver 311 that the media content instance encompassed bythis cluster is not to be deleted. The device driver 311 searches theFAT 500 for an available replacement cluster for cluster 2. As indicatedin the second data structure 502 of FIG. 5D, cluster 13 is available(i.e. has a LinkedFiles entry 570 of “0”). The device driver 311allocates cluster 13 as a TSB cluster (i.e. encompassed by TSBfile), andincrements the LinkedFiles entry 570 for cluster 13 to “1” as indicatedin FIG. 5E. Cluster 2 is removed by the device driver 311 from the TSB378 and its LinkedFiles entry 570 is decremented (from “2” to “1”).Cluster list 530 in first data structure 501 is also updated by thedevice driver 311 to reflect the removal of cluster 2 and the allocationof the cluster 2 replacement, cluster 13. As the TSB 378 shifts, cluster3 is eventually removed (and its LinkedFiles entry 570 decremented to“1”), with a corresponding allocation of another cluster (cluster 14)and a FAT 500 update as illustrated in FIG. 5F. Thus, through acombination of this file sharing aspect and the allocation anddeallocation of clusters based on maintaining this file sharing counteror file sharing count (e.g. LinkedFiles entry 570), permanently recordedfiles are created from the TSB file while maintaining the TSB 378 assubstantially constant.

FIGS. 6A-6C are programming diagrams of example software programmingcode in conventional “C” computer language managed by the device driver311 (FIG. 3A). FIG. 6A is a program diagram of example softwareprogramming code in conventional “C” computer language corresponding tothe LinkedFiles entry 570 of the second data structure 501 of the FATdepicted in FIG. 5A. As discussed previously, any time a cluster isprovisioned with a file (for example, TSBfile or filerecord1), the“numlinkedFiles” value of the affected cluster is incremented. In theexample structure depicted in FIG. 6A, the “numlinkedFiles” correspondsto the LinkedFiles entry 570 (FIG. 5A). When the cluster is deallocated(for example, in the case of when a media content instance previouslywritten to the TSB 378 (FIG. 3A) is deleted, or a media content instancein the TSB 378 is converted to a permanent recording), the“numlinkedFiles” value for the associated deallocated cluster isdecremented. Free, or available, clusters are clusters that are notlinked to any file. The “numLinkedFiles” value for free clusters equals“0”. As indicated previously, the device driver 311 maintains a list ofits allocated clusters in cluster list 530 of first data structure 501.For a permanently recorded file, the cluster list 530, starting sector540 and ending sector 550 of first data structure 501 represents anordered list of clusters used, the start sector in the first clusterindicating the beginning of the permanently recorded file, and theending sector in the last sector indicating the end of the permanentlyrecorded file, respectively. This data structure can be represented bythe example “C” programming depicted in FIG. 6B. FIG. 6C illustratesexample “C” programming for a FAT first data structure 501 (FIG. 5B) forthe TSB file that represents the list of clusters used for theprogramming information (i.e. for each media content instance). Asdistinguished from the data structure in FIG. 6B, there is no start andstop position for the TSB 378. All of the sectors in all of the TSBclusters are reserved for the TSB 378. For a permanently recorded file,the beginning of a show might not be in the first sector of a cluster(similarly, the end of a show might not be in the last sector of acluster). Thus, a “startingSector” and “endingSector” are maintained for“RecordedFileInfo” (FIG. 6B). Alternatively, the starting and endingsector of the TSB 378 at any point in time can be maintained in the datastructure of the FAT.

To create a TSB 378 (FIG. 3A), the PVR application 377 (FIG. 3A) invokesa driver applications programming interface (API), which returns ahandle (i.e. pointer) to the TSB 378, as described above. FIG. 7A is anexample driver API to accomplish this function. The API of FIG. 7A is a“call” made by the PVR application 377 to the device driver 311 (FIG.3A). The device driver 311, in one implementation, creates a TSBfileInfodata structure (FIG. 6C) in response to the API of FIG. 7A and theoperating system 353 assigns a handle which can be returned to the PVRapplication 377. The PVR application 377 can save this handle in itsdata structure (FIG. 4B, Line 460). The API of FIG. 7A also causes thedevice driver 311 to allocate the clusters and update the FAT for theclusters allocated to the TSB 378. Note that the “ui32” is the data typefor the handle. It represents an unsigned integer of 32 bits. Theelement “tvId” is a variable of type TV_ID, which contains data thedevice driver 311 uses to ascertain the source of the data to the TSB378.

To create a file for stand-alone, or scheduled, (permanent) recordings,another device driver API can be invoked by the PVR application 377(FIG. 3A), such as example API in FIG. 7B. Generally, this stand-alonerecording API takes a filename and a quality level and returns a handleto the created file. Similar to the implementation discussed for the APIof FIG. 7A, the device driver 311 creates a “RecordedFileInfo” datastructure (FIG. 6B) in response to the API of FIG. 7B and the operatingsystem 353 (FIG. 3A) assigns a handle which can be returned to the PVRapplication 377. The PVR application 377 can save this handle in ascheduled recording data structure (not shown). A “filename” is the nameof the file that is specifically recorded to for the scheduledrecording. The “filename” is specified to the device driver 311 (FIG.3A) by the PVR application 377 (FIG. 3A) and the operating system 353returns a handle to the PVR application 377. The handle is used for allsubsequent calls to the device driver 311 pertaining to that file. The“quality” element specifies the encoding quality or bit-rate (good,better, best) similar to LP, SLP, and SP for conventional video taping.The “ui32” and “tvId” elements are as described with regards to FIG. 7A.

An API which creates a new file from existing clusters in the TSB 378(FIG. 3A) could be represented by the example “C” programming structureillustrated in FIG. 7C. As will be explained below, the user can rewindinto the TSB 378 and choose to permanently record a media contentinstance (i.e. designate a media content instance as a permanentrecording). The PVR application 377 (FIG. 3A) receives a key press eventfrom a remote control device 380 (FIG. 3A) corresponding to the userselecting the “record” button (and processed by the operating system 353and window manager, as described in association with FIG. 3A). The PVRapplication 377 invokes the API in FIG. 7C, which passes the open TSBfile handle (“tsbHandle”) and the start (“startNPT”) and stop(“stopNPT”) location of the desired media content instance (i.e. mediacontent instance targeted to be designated as a permanent recording) tothe device driver 311 (FIG. 3A). The API of FIG. 7C creates a newpermanent recording file (“filename”) and causes the device driver 311to create a corresponding entry in the FAT with the assigned clustersfrom the TSB file, and the operating system 353 returns the handle forthe permanent recording file to the PVR application 377. In other words,the device driver 311 creates a “RecordedFileInfo” structure (asdepicted in FIG. 6B) for this new permanent recording file based on thestart and stop NPT of the media content instance and the handle of theTSB 378. The pointer to the TSB location is represented by “tsbHandle”.The handle is used to specify which TSB 378 to make the recording from.The device driver 311 passes back the calculative location (NPT values)for the new permanent recording file to the PVR application 377 asrequested by the PVR application 377. The device driver 311 calculatesthe new values based on the NPT values passed by the PVR application377. The device driver 311 determines the duration of the permanentlyrecorded file by subtracting the “startNPT” from the “stopNPT” value.Then, the device driver 311 assigns the NPT duration to the “stopNPT” ofthis new file, and assigns the “startNPT” to zero. The device driver 311then passes the new locations back to the PVR application 377 forstorage in a data structure for permanent recordings, similar instructure to that described for the data structure of FIG. 4A. After thenew permanently recorded file is created, the active playback file isstill the TSB file (e.g. TSBfile). The newly created permanentlyrecorded file is open also. Although it is not actively being written toor read from, it can share clusters with the TSB file that is being readfrom. The user can still perform trick modes and play from the same TSB378, including data that is in the new permanently recorded file. Thus,the user can navigate through the TSB (e.g. using “trick modes”) andstill view material that the user has marked as permanently recorded.

FIGS. 8A- 8D provide block diagram illustrations of how the devicedriver 311 (FIG. 3A) manages the cluster allocation and deallocation formedia content instances downloaded to the TSB 378 (FIG. 3A). Bycontinuously and automatically deallocating and allocating clusters, thedevice driver 311 (FIG. 3A) can maintain the TSB file (and thus the TSB378) as substantially constant. Referring to FIG. 8A, assume thatclusters are allocated for the TSB 378, similar to the manner describedpreviously in association with FIG. 5B, and that the size of the TSB 378equals ten clusters. TSBar 810 represents the TSB 378. The TSBar 810 isrepresented as shifting as time progresses. The shifting is in fact thecontinually advancing write position to the disk space, as describedabove. TSBar 810 also includes live point “L” 850 corresponding to thecurrent write position to the TSB 378. LinkedFiles entry 830 and clusterentry 820 are the second structure entries of the FAT 500 as describedin FIG. 5A. In this example, the initial cluster list for the TSB 378includes, in order, clusters 1,2,3,7,8,9,10,12,16, and 17. The “1” inthe LinkedFiles entry 830 is the number provided by the device driver311 when allocating clusters to the TSB 378. The number “1” under thisaforementioned list of clusters (e.g. 1,2, etc.) indicates that theseclusters are associated with one file (here, the TSB file), and share noother files. Downloaded media content instances are temporarily writtento the TSB 378, starting at cluster 1, then proceeding to cluster 2, andthen progressing through each cluster through cluster 17. Thus, eachcluster is associated with one or more media content instances, asindicated by program (media content instance) row 840 in FIG. 8A. Theopen end of the box representing Program 3 (i.e. media content instance3) indicates that Program 3 is still in process of being written to theTSB 378, and has not been completely downloaded to the TSB 378 yet.

The device driver 311 (FIG. 3A) automatically maintains the TSB 378(FIG. 3A) as substantially constant in size through a process oftracking the write locations and deallocating and allocating clusters.The device driver 311 maintains an ordered list of clusters in the FAT,as described above, and thus knows, based on the TSB size requirement orcapacity, to automatically deallocate clusters storing media content inthe TSB file and allocate replacement clusters to continue writing mediacontent to the TSB file when the TSB capacity is about to be exceeded.After writing Program 3 to cluster 17, the device driver 311automatically advances its write position and automatically deallocatesthe cluster storing the oldest downloaded media content instance in theTSB 378 and reallocates a replacement cluster to continue the writing ofProgram 3, as illustrated in FIG. 8B. This process occurs withoutintervention or further instruction (i.e. autonomously) from the PVRapplication 377 (FIG. 3A). Cluster 1 has a value for the LinkedFilesentry 830 of “1”, as shown in FIG. 8A, and thus as the TSB capacity isabout to be exceeded, the device driver 311 will deallocate cluster 1from the TSB 378 and decrement the value in its LinkedFiles entry 830(herein, LinkedFiles value), resulting in a LinkedFiles value of “0”.Note that the use of the phrase “TSB capacity” will be understood tomean that the allocated TSB 378 (FIG. 3A) size from the first (oroldest) allocated cluster to the most recently allocated cluster isabout to be exceeded, requiring the deallocation of the oldest cluster(and making it writeable) from the TSB 378 and the reallocation of areplacement cluster. It will be understood, in the context of TSBcapacity, that in the preferred embodiments of the invention, clustersare dynamically allocated and deallocated resulting in not necessarilyhaving a first and last cluster, but more accurately, having anever-changing oldest cluster and most recently allocated cluster suchthat the size of the TSB 378 is always maintained as substantiallyconstant. Thus, cluster 1 is now available to be allocated for the TSBfile or for other files. Further, device driver 311 seeks to allocateanother cluster from the available pool of clusters listed in the FAT(i.e. those clusters with LinkedFiles values of “0”) to replace cluster1. Assume that cluster 30 is the next available cluster (i.e., cluster30 initially has a zero value). Once the device driver 311 allocatescluster 30, the device driver 311 increments the cluster 30 LinkedFilesvalue from “0” to “1”. Alternatively, device driver 311 can keep theLinkedFiles value of cluster 1 equal to a value of one and cause anoverwrite with another media content instance, providing for a circularstyle, overwriting buffer arrangement.

When the writing of Program 3 is completed, the next media contentinstance, program 4, is written to the available sectors of cluster 30.The live point “L” 850 in the TSBar 810 represents that Program 4 iscurrently being written to cluster 30. As the TSB 378 (FIG. 3A) shifts(i.e. the write location advances) and cluster 30 is full, the devicedriver 311 (FIG. 3A) seeks the next cluster in the TSB 378 to writeprogram 4. Following a similar procedure as described above, devicedriver 311 will deallocate cluster 2 (and decrement its correspondingLinkedFiles value) and allocate another cluster (for example, cluster31) and increment its corresponding LinkedFiles value from “0” to “1”.Further, device driver 311 will start writing Program 4 to the newlyallocated cluster, as illustrated in FIG. 8C. At this point, the amountof data for Program 1 is reduced by the amount that was previously incluster 1 and cluster 2. As the TSB 378 shifts, this process ofdeallocation and allocation continues for the balance of the write ofProgram 4 and for writing more media content instances into the TSB 378.At least at program breaks and at the start of writing to a new cluster,the PVR application 377 (FIG. 3A) requests update information from thedevice driver 311 and, as well, the FAT 500 is updated by the devicedriver 311. This updating can occur at an even greater frequency throughseveral mechanisms. In one embodiment, the updating can occur uponrequest (for example, an API invocation every 10 msec) from the PVRapplication 377. In other embodiments, the PVR application 377 sets up atimer interrupt (in cooperation with the operating system 353 (FIG. 3A))synched to 10 msec intervals of the internal real-time clock (not shown)of the DHCT 16 (FIG. 3A) to provide the NPT update. In otherembodiments, a greater or lesser frequency of update can be used. Inother embodiments, updates can occur at other times or during otherevents as well.

In addition to the stop and start locations for each media contentinstance, the PVR application 377 (FIG. 3A) maintains the complete guidedata for the buffered and recorded media content instances. This data isprovided by either maintaining a pointer to a media content instanceguide database (not shown) in the PVR application 377, or by copying theparticular media content instance information from a media contentinstance guide database (such as an EPG database or a databasemaintained in application memory 370 (FIG. 3A)) to the database of thePVR application 377. Alternatively, the PVR application 377 may use theapplications database 370 in lieu of providing its own database.Preferably, the PVR application 377 uses the storage device 373 forstoring the media content instance guide data. The media contentinstance guide data provides a source for the PVR application 377 todisplay (to a user) a list of media content instances currently in thestorage device 373 that have guide data available.

FIGS. 9A-9I are block diagrams that illustrate one implementation forpermanently recording out of the TSB 378 (FIG. 3A). Referring to FIG.9A, assume the user has decided to permanently record Program 2 (ormedia content instance 2) after the last TSB shift illustrated in FIG.8C. As indicated earlier, a permanent recording can be accomplished byrewinding through the TSB 378 to any point in Program 2, and thenpressing the “record” button on a remote device (such as remote controldevice 380 shown in FIG. 12). Alternatively, among many otheralternatives, the user can select “record” from a list displayed on ascreen display. In response to the request to permanently record Program2 from the TSB 378, the PVR application 377 (FIG. 3A) invokes a specialAPI (as described in FIG. 7C) which takes as arguments information whichdescribes the start and end locations (in NPT) of Program 2. A newpermanently recorded file is then created (for example, filerecord1 fromFIG. 5C) with a corresponding FAT entry that includes a list of theclusters which Program 2 encompasses as well as the stop and end sectorswithin those clusters for Program 2, as described above. The newpermanently record file is now linked with these clusters and theLinkedFiles value for each of these clusters is incremented, asrepresented in FIG. 9A. As indicated, Program 2 is stored acrossclusters 3,7,8, and 9.

Referring to FIG. 9B, when the TSB 378 (FIG. 3A) shifts, the data forcluster 3 persists. Because the device driver 311 (FIG. 3A) recognizesthat cluster 3 has a LinkedFiles value of “2”, it will not delete thatcluster, but instead, allocates a new cluster, cluster 34, to its listfor continually writing Program 4. Cluster 3 is eventually removed (e.g.as the writing progresses) from the TSB cluster list and its LinkedFilesvalue decremented to “1”. Data in cluster 3 for Program 1, though italso exists, is essentially lost because Program 1 was never marked asrecorded (i.e. designated with a LinkedFiles value greater than “1”).Thus, the LinkedFiles value provides a notice to the device driver 311that prevents the device driver 311 configuring the associated clusteras writeable. The LinkedFiles value also provides a notice to the devicedriver 311 to allocate replacement clusters in order to maintain asubstantially constant TSB 378.

FIG. 9C illustrates the next TSB 378 (FIG. 3A) shift. To continue towrite Program 4, the device driver 311 (FIG. 3A) allocates anothercluster, cluster 35 (and increments its LinkedFiles value), becausecluster 7 has two file links (a value of “2”) corresponding to the TSBfile and the permanently recorded file. As the TSB shifts, cluster 7 isremoved from the TSB 378. The device driver 311 also decrements thecluster 7 LinkedFiles value to “1”. At the next shift point, illustratedby FIG. 9D, cluster 8, also part of Program 2, is deallocated from theTSB 378 and cluster 36 is added. At the next shift point, illustrated byFIG. 9E, cluster 9, also part of Program 2, is deallocated from the TSB378 and cluster 37 is added to complete the write of Program 4 and startwriting new media content instance, Program 5. Program 2 is not withinthe boundaries of the TSB 378. As described above, the PVR application377 (FIG. 3A) maintains the correlation between the location of themedia content instance in the TSB 378 and the corresponding playbackpoint in the media content instance. The user cannot reach Program 2 byrewinding within the TSB 378. If the user was currently playing Program2, he could only get the TSB 378 by stopping the recorded file playback.

After the new permanently recorded file is created, the active playbackfile is still the TSB file (e.g., TSBfile). The newly createdpermanently recorded file is open also. Although the new permanentlyrecorded file is not actively being written to or read from, it canshare clusters with the TSB file that are being read. The user can stillperform trick modes and play from the same TSB file. FIG. 10A depicts apossible state when the user decided to permanently record Program 2.Note that the cluster entry 920 and LinkedFiles entry 930 of FIG. 9Ahave been removed for FIG. 10A to simplify discussion. In this example,the playback point 1070 is within the range of the TSB file (as denotedby the TSBar 1010) and the user can move through any part of the TSBfile. If the playback point 1070 falls outside of the bounds of the TSBfile (as represented by TSBar 1010), as illustrated in FIG. 10B, theactive playback file transitions to the permanently recorded file. Thislatter situation can occur if the user is in a paused mode, while thedevice driver is continually writing real-time media content to the TSB378 (FIG. 3A). Eventually, if paused long enough, the read locationcorresponding to the paused position can be at a cluster location thathas been deallocated from the TSB 378. At this point, the PVRapplication 377 (FIG. 3A) handles the playback as a normal playback froma permanently recorded file.

Because the PVR application 377 (FIG. 3A) is aware of the TSB 378 (FIG.3A) and the permanently recorded file boundaries, it can handle theaforementioned transitions according to the flowchart depicted in FIG.10C, in accordance with one embodiment of the invention. As noted inFIG. 10C, step 1005 provides that the PVR application 377 receives anevent notification from the device driver 311 (FIG. 3A) that the TSB 378is going to shift and updates the TSB starting location (e.g. startNPTin example “C” programming depicted in FIG. 4B). This event can beanything that causes the shift, including a continued write of a mediacontent instance to a new cluster of the TSB 378, or a new media contentinstance write to a new cluster of the TSB 378, when the TSB 378 is atcapacity. Step 1025 provides that the PVR application 377 invokes adriver API to retrieve status of current playback position from thedevice driver 311. The example driver API illustrated in FIG. 10Dreturns the current NPT for the specified handle (TSB 378 in thisexample). The “handle” indicated is the handle previously returned by a“call” to open the TSB file or to make a scheduled (stand-alone)permanent recording. “Npt” is the current position in the recording.“Scale” is the current rate and direction of play. “Mode” indicates“PAUSED”, “PLAYING”, or “RECORDING”. Referring again to FIG. 10C, step1035 provides that the PVR application 377 compares the current playbacklocation (NPT) with the shifted TSB start location (NPT). If the currentplayback location is greater than the shifted TSB start location, thenplayback continues from the TSB 378 (step 1037). If the current playbacklocation is less than the shifted TSB start location, step 1045 providesthat the PVR application 377 finds any active permanently recorded filethat contains the current playback NPT. In the example depicted in FIG.10B, the permanently recorded file for Program 2 contains the currentplayback NPT. Step 1055 provides that the application calls a driver APIwhich makes the permanently recorded file act as the active file withoutdisrupting the playback. An example signature for this API isillustrated in FIG. 10E. In this API, “tsbhandle” is the handle for theTSB 378. “Handle” is the handle for the permanently recorded file.

In one embodiment, contiguous media content instances can be storedwithout losing any beginning or end of media content instance, or mediacontent instance data. This is because two contiguous media contentinstances can share a cluster which contains data for both media contentinstances. FIG. 11A is a block diagram depicting an example of when auser decides to record more than one media content instance before thelast TSB shift depicted in FIG. 9E. Program 2 and 3 are requested mediacontent instances for designation as permanent recordings. In thisexample, cluster 9 now has a LinkedFiles value of 3. It is shared by thepermanently recorded files of Program 2, Program 3, and the TSB file forTSB 378 (FIG. 3A) (thus the “3” value). As shown in FIG. 11B, at thenext shift point, cluster 9 is removed from the TSB 378, and itsLinkedFiles value is decremented to “2” by the device driver 311 (FIG.3A). Further, the device driver allocates cluster 37 as a replacement tothe deallocated cluster (cluster 9). At the next shift point,illustrated by FIG. 11C, Cluster 10 is deallocated from the TSB 378 andits LinkedFiles value decremented, while cluster 38 is allocated.

As described earlier, the user permanently records from the TSB 378(FIG. 3A) by returning to any part of a media content instance in theTSB 378 and selecting playback and then record from a remote device 380(described below), or alternatively, from selecting record from apre-configured table or list entry in a user interface screen generatedon a screen display. An example remote control device 380 to provideinput to the DHCT 16 (FIG. 3A) is illustrated in FIG. 12. Rewind 388 andfast-forward 387 buttons enable a user to access buffered media contentinstances in the TSB 378. Record button 390 enables the user topermanently record any media content instance buffered into the TSB 378,as described below. Pause button 391 enables the user to pause a mediacontent instance, or pause during a search for a particular mediacontent instance. Playback 392 enables the playback of a media contentinstance. Many alternative methods of providing user input may be usedincluding a remote control device with different buttons and/or buttonlayouts, a keyboard device, a voice activated device, etc. Further, auser interface may present screen symbols corresponding to buttons onthe remote control device 380 which suggest recording functionality. Theembodiments of the present invention described herein are not limited bythe type of device used to provide user input.

The PVR application 377 (FIG. 3A) provides a user interface that assiststhe user in navigating to, and between, buffered media contentinstances. Specifically, the user interface provides a display of theuser's current position in a buffered media content instance (e.g. TVprogram) relative to the currently viewed time-shifted media contentinstance. The currently viewed, time-shifted media content instancelength is represented by a “progress bar” displayed at the bottom of thescreen. Thus, the “progress bar” indicates the media content instancetime boundaries, and is labeled with the media content instanceinformation, as will be described below. FIGS. 13A-13C are screendiagrams that illustrate an example user interface screen display thatcan be presented on, for example, a television or other display device.These example screen displays depict a progression through three mediacontent instances of a TSB 378 (FIG. 3A), including a short rewindbetween the beginning of one media content instance and the end of themedia content instance before it. During rewind of the TSB 378, one ormore media content instances may be available for playback or recordingdepending on the length of time the channel was tuned.

FIG. 13A is an example screen display of the most recent media contentinstance after rewinding 16 minutes and then pausing. A pause banner1320 and progress bar 1310 are overlaid on top of a display of a mediacontent instance. The media content instance display is depicted asclosely hashed lines 1305. Pause banner 1320 includes pause icon 1321,and time status 1385 indicating the location in the buffered mediacontent instance. Current time 1387 indicates the current time of day.Title portion 1327 indicates the title of the buffered media contentinstance associated with the current progress bar 1310. The progress bar1310 shows progression, in terms of TSB space, through a media contentinstance as the viewer moves, or navigates, through it. Althoughdepicted as a media content instance specific indicator, otherembodiments are contemplated, including, but not limited to, indicatorsof the entire TSB capacity. Media content instance time 1317 indicatesthe scheduled media content instance start and end time. Bar arrow 1337represents that there are more buffered media content instancesavailable. The bar arrow 1337 suggests that these other buffered mediacontent instances can be accessed by, for example, rewinding to them.

First portion 1347 (depicted with hash lines) indicates the amount ofthe current media content instance that is buffered (i.e. written to theTSB 378, FIG. 3A). Thus, first portion 1347 provides the user with anindication as to what portion of the current media content instance isavailable for rewinding and fast-forwarding. Second portion 1357(indicated with reverse hash lines) indicates that the media contentinstance is not over, as indicated also by the current time 1387 in themedia content instance (i.e. 9:58pm). For example, the user has rewoundfor 16 minutes. From the current time 1387, that places the status arrow1370 at 9:58 minus 16 minutes, or at 9:42 within the buffered mediacontent instance Spin City, which is reflected by time status 1385. Inother words, if the user had entered into the room at 9:42, the screendisplay would show the same media content instance “snap-shot” as itdoes now. If the user wants to permanently record, the user preferablyselects the record button 390 on the remote device 380 (FIG. 12).

The next example screen display, as depicted in FIG. 13B, is of adisplay of a media content instance buffered into the TSB 378 (FIG. 3A)before the most recent one (FIG. 13A) and after rewinding it 30 minutesor the whole media content instance length. As noted by title portion1327 and status arrow 1370 and time status 1385, the user has rewound tothe beginning of The Drew Carey Show. The first portion 1347 indicatesthat the entire show was buffered into the TSB 378. Bar arrows 1337 oneach end of the progress bar 1310 suggest to the user that there arebuffered media content instances accessible before and after The DrewCarey Show. Note current time 1387 of 10:32 PM, further illustrating theability of the PVR application 377 (FIG. 3A) to access and recordbuffered media content instances. To permanently record, the usertypically selects the record button 390 on the remote control device 380(FIG. 16) at any point within the Drew Carey Show. Alternatively, amongother alternatives, the user can select the record button 390 while themedia content instance is paused.

The next example screen display depicted in FIG. 13C is of the displayof a media content instance that was buffered just before the mediacontent instance shown in FIG. 13B. No rewinding of this media contentinstance has occurred yet, as indicated by status arrow 1370 and thetime status 1385. As noted by the title portion 1327, this bufferedmedia content instance is Who Wants To Be A Millionaire. Note that theprogress bar 1310 shows only one bar arrow 1337 on the right hand side,illustrating the fact that there are no other media content instancesbuffered in the TSB 378 (FIG. 3A) before Who Wants To Be A Millionaire.Also note that unavailable portion 1397 indicates the amount of themedia content instance that is unavailable to permanently record orview. It would be unavailable, for example, if the channel with thismedia content instance were not tuned during this time. Again, topermanently record, the user preferably selects the record button 390 onthe remote control device 380 (FIG. 12) during any point in Who Wants ToBe A Millionaire.

As an alternative to rewinding to the media content instance in the TSB378 (FIG. 3A) desired for permanently recording, a user interface screen(not shown) may be presented that lists the media content instancescurrently in the TSB 378, with a mechanism to select which of thesemedia content instances the user desires to permanently record (i.e.designate as permanent, not part of the TSB 378). The list of mediacontent instances can be ascertained from the media content instanceguide data, as described above.

FIG. 14 is an example screen barker 1400 that is presented to the userwhen there is not enough available hard disk space for permanentlyrecording. As described earlier, the device driver 311 (FIG. 3A)communicates through the operating system 353 (FIG. 3A) to the PVRapplication 377 (FIG. 3A) to keep the PVR application 377 updated withinformation about available free space. The PVR application 377, whichalready “knows” how much time each buffered media content instanceconsumes, can cause the example screen barker 1400 to pop up to a userto warn of unavailable space. The user can then, by selecting buttons onthe remote device 380 (FIG. 12), be presented with a list of permanentlyrecorded media content instances to choose from to decide which ones todelete.

Note that the scope of the preferred embodiments of the invention is notlimited to systems where viewing conflicts may arise due to, among otherreasons, the variety and quantity of viewing options. Systems withlimited viewing options are also encompassed by the scope of thepreferred embodiments.

The PVR application 377 (FIG. 3A) and device driver 311 (FIG. 3A) of thepresent invention can be implemented in hardware, software, firmware, ora combination thereof. In the preferred embodiment(s), the PVRapplication 377 and device driver 311 is implemented in software orfirmware that is stored in a memory and that is executed by a suitableinstruction execution system. If implemented in hardware, as in analternative embodiment, the PVR application 377 and device driver 311may be implemented with any or a combination of the followingtechnologies, which are all well known in the art: a discrete logiccircuit(s) having logic gates for implementing logic functions upon datasignals, an application specific integrated circuit (ASIC) havingappropriate combinational logic gates, a programmable gate array(s)(PGA), a field programmable gate array (FPGA), etc.

The PVR application 377 (FIG. 3A) and device driver 311 (FIG. 3A), whichcomprise an ordered listing of executable instructions for implementinglogical functions, can be embodied in any computer-readable medium foruse by or in connection with an instruction execution system, apparatus,or device, such as a computer-based system, processor-containing system,or other system that can fetch the instructions from the instructionexecution system, apparatus, or device and execute the instructions. Inthe context of this document, a “computer-readable medium” can be anymeans that can contain, store, communicate, propagate, or transport theprogram for use by or in connection with the instruction executionsystem, apparatus, or device. The computer readable medium can be, forexample but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, device,or propagation medium. More specific examples (a nonexhaustive list) ofthe computer-readable medium would include the following: an electricalconnection (electronic) having one or more wires, a portable computerdiskette (magnetic), a random access memory (RAM) (electronic), aread-only memory (ROM) (electronic), an erasable programmable read-onlymemory (EPROM or Flash memory) (electronic), an optical fiber (optical),and a portable compact disc read-only memory (CDROM) (optical). Notethat the computer-readable medium could even be paper or anothersuitable medium upon which the program is printed, as the program can beelectronically captured, via for instance optical scanning of the paperor other medium, then compiled, interpreted or otherwise processed in asuitable manner if necessary, and then stored in a computer memory.

Blocks in the flow chart of FIG. 10C should be understood asrepresenting modules, segments, or portions of code which include one ormore executable instructions for implementing specific logical functionsor steps in the process, and alternate implementations are includedwithin the scope of the preferred embodiment of the present invention inwhich functions may be executed out of order from that shown ordiscussed, including substantially concurrently or in reverse order,depending on the functionality involved, as would be understood by thosereasonably skilled in the art of the present invention.

It should be emphasized that the above-described embodiments of thepresent invention, particularly, any “preferred embodiments” are merelypossible examples of implementations, merely setting forth a clearunderstanding of the principles of the inventions. Many variations andmodifications may be made to the above-described embodiments of theinvention without departing substantially from the spirit of theprinciples of the invention. All such modifications and variations areintended to be included herein within the scope of the disclosure andpresent invention and protected by the following claims.

1-49. (canceled)
 50. A device driver on a recordable media comprising:logic configured to allocate clusters for a buffer file for buffer spaceon a disk and cause media content instances to be written to the bufferspace; logic configured to limit the buffer file to a substantiallyconstant buffer file size, such that when the buffer file approaches afull status, the cluster storing the oldest media content is firstdeallocated from the buffer file and a new cluster is correspondinglyallocated to the buffer file; and logic configured to maintain thebuffer space as substantially constant in size by autonomously andautomatically removing the buffer space clusters designated for apermanent recording and replacing the removed buffer space clusters withreplacement clusters.
 51. The device driver of claim 50, wherein thebuffer space clusters designated for the permanent recording arepermitted to be simultaneously shared among the buffer file and a filefor the permanent recording.
 52. The device driver of claim 50, whereinthe logic is further configured to use a file allocation table.
 53. Thedevice driver of claim 52, wherein the file allocation table includes afirst data structure comprising a list of the clusters for each of thefiles, and a second data structure comprising a list of the clusterslocated on the disk and a file sharing counter of how many of the filesshare each of the clusters.
 54. The device driver of claim 53, whereinthe logic is further configured to increment the file sharing counterwhen the number of the files that are shared are increased and decrementthe file sharing counter when the number of the files that are sharedare decreased.
 55. The device driver of claim 50, wherein the logic isfurther configured to generate normal play time for each one of thefiles to track locations in each of the files and to track locations ofmedia content instances.
 56. The device driver of claim 50, wherein thelogic is further configured to generate normal play time for writeoperations and the read operations to the disk.